diff --git a/k8s/operator-console/base/console-deployment.yaml b/k8s/operator-console/base/console-deployment.yaml index 9d3004e00..02f356df6 100644 --- a/k8s/operator-console/base/console-deployment.yaml +++ b/k8s/operator-console/base/console-deployment.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: console-sa containers: - name: console - image: 'minio/console:v0.20.4' + image: 'minio/console:v0.20.5' imagePullPolicy: "IfNotPresent" env: - name: CONSOLE_OPERATOR_MODE diff --git a/k8s/operator-console/standalone/console-deployment.yaml b/k8s/operator-console/standalone/console-deployment.yaml index 17a9c95dd..3d39c5da6 100644 --- a/k8s/operator-console/standalone/console-deployment.yaml +++ b/k8s/operator-console/standalone/console-deployment.yaml @@ -32,7 +32,7 @@ spec: spec: containers: - name: console - image: 'minio/console:v0.20.4' + image: 'minio/console:v0.20.5' imagePullPolicy: "IfNotPresent" env: - name: CONSOLE_MINIO_SERVER diff --git a/models/kms_assign_policy_response.go b/models/kms_assign_policy_response.go deleted file mode 100644 index 8f625e6cc..000000000 --- a/models/kms_assign_policy_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsAssignPolicyResponse kms assign policy response -// -// swagger:model kmsAssignPolicyResponse -type KmsAssignPolicyResponse interface{} diff --git a/models/kms_create_key_response.go b/models/kms_create_key_response.go deleted file mode 100644 index ca3945062..000000000 --- a/models/kms_create_key_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsCreateKeyResponse kms create key response -// -// swagger:model kmsCreateKeyResponse -type KmsCreateKeyResponse interface{} diff --git a/models/kms_delete_identity_request.go b/models/kms_delete_identity_request.go deleted file mode 100644 index 239b8cd91..000000000 --- a/models/kms_delete_identity_request.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsDeleteIdentityRequest kms delete identity request -// -// swagger:model kmsDeleteIdentityRequest -type KmsDeleteIdentityRequest interface{} diff --git a/models/kms_delete_identity_response.go b/models/kms_delete_identity_response.go deleted file mode 100644 index 8537537ff..000000000 --- a/models/kms_delete_identity_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsDeleteIdentityResponse kms delete identity response -// -// swagger:model kmsDeleteIdentityResponse -type KmsDeleteIdentityResponse interface{} diff --git a/models/kms_delete_key_response.go b/models/kms_delete_key_response.go deleted file mode 100644 index 657f4698d..000000000 --- a/models/kms_delete_key_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsDeleteKeyResponse kms delete key response -// -// swagger:model kmsDeleteKeyResponse -type KmsDeleteKeyResponse interface{} diff --git a/models/kms_delete_policy_request.go b/models/kms_delete_policy_request.go deleted file mode 100644 index 12c4ec20b..000000000 --- a/models/kms_delete_policy_request.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsDeletePolicyRequest kms delete policy request -// -// swagger:model kmsDeletePolicyRequest -type KmsDeletePolicyRequest interface{} diff --git a/models/kms_delete_policy_response.go b/models/kms_delete_policy_response.go deleted file mode 100644 index 45ae91627..000000000 --- a/models/kms_delete_policy_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsDeletePolicyResponse kms delete policy response -// -// swagger:model kmsDeletePolicyResponse -type KmsDeletePolicyResponse interface{} diff --git a/models/kms_import_key_response.go b/models/kms_import_key_response.go deleted file mode 100644 index e46e69a6d..000000000 --- a/models/kms_import_key_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsImportKeyResponse kms import key response -// -// swagger:model kmsImportKeyResponse -type KmsImportKeyResponse interface{} diff --git a/models/kms_list_identities_request.go b/models/kms_list_identities_request.go deleted file mode 100644 index 4b722102b..000000000 --- a/models/kms_list_identities_request.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsListIdentitiesRequest kms list identities request -// -// swagger:model kmsListIdentitiesRequest -type KmsListIdentitiesRequest interface{} diff --git a/models/kms_set_policy_response.go b/models/kms_set_policy_response.go deleted file mode 100644 index 10c52b7e8..000000000 --- a/models/kms_set_policy_response.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2022 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// KmsSetPolicyResponse kms set policy response -// -// swagger:model kmsSetPolicyResponse -type KmsSetPolicyResponse interface{} diff --git a/portal-ui/build/asset-manifest.json b/portal-ui/build/asset-manifest.json index 0e57e5a91..2fae9746b 100644 --- a/portal-ui/build/asset-manifest.json +++ b/portal-ui/build/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "./static/css/main.b20a708b.css", - "main.js": "./static/js/main.28f60345.js", + "main.js": "./static/js/main.9dec64e0.js", "static/js/1260.5248e62a.chunk.js": "./static/js/1260.5248e62a.chunk.js", "static/js/6914.57144791.chunk.js": "./static/js/6914.57144791.chunk.js", "static/js/4209.dd491df8.chunk.js": "./static/js/4209.dd491df8.chunk.js", @@ -31,7 +31,7 @@ "static/js/7821.461c5aa3.chunk.js": "./static/js/7821.461c5aa3.chunk.js", "static/css/2850.90c9cdc7.chunk.css": "./static/css/2850.90c9cdc7.chunk.css", "static/js/2850.8a62b572.chunk.js": "./static/js/2850.8a62b572.chunk.js", - "static/js/4131.864cf81f.chunk.js": "./static/js/4131.864cf81f.chunk.js", + "static/js/4131.739594e9.chunk.js": "./static/js/4131.739594e9.chunk.js", "static/css/343.90c9cdc7.chunk.css": "./static/css/343.90c9cdc7.chunk.css", "static/js/343.34f42ca3.chunk.js": "./static/js/343.34f42ca3.chunk.js", "static/css/1199.90c9cdc7.chunk.css": "./static/css/1199.90c9cdc7.chunk.css", @@ -39,7 +39,7 @@ "static/css/5517.90c9cdc7.chunk.css": "./static/css/5517.90c9cdc7.chunk.css", "static/js/5517.cf7204c7.chunk.js": "./static/js/5517.cf7204c7.chunk.js", "static/js/2555.0dbc9c69.chunk.js": "./static/js/2555.0dbc9c69.chunk.js", - "static/js/7585.862b6eb5.chunk.js": "./static/js/7585.862b6eb5.chunk.js", + "static/js/7585.3ba2ecd7.chunk.js": "./static/js/7585.3ba2ecd7.chunk.js", "static/js/4902.395ae657.chunk.js": "./static/js/4902.395ae657.chunk.js", "static/js/7847.4176f3e5.chunk.js": "./static/js/7847.4176f3e5.chunk.js", "static/js/3097.c51c1e97.chunk.js": "./static/js/3097.c51c1e97.chunk.js", @@ -59,10 +59,10 @@ "static/js/7798.5da0ca4b.chunk.js": "./static/js/7798.5da0ca4b.chunk.js", "static/js/8833.9f18e03b.chunk.js": "./static/js/8833.9f18e03b.chunk.js", "static/js/6526.904dad0c.chunk.js": "./static/js/6526.904dad0c.chunk.js", - "static/js/483.6a2efeb6.chunk.js": "./static/js/483.6a2efeb6.chunk.js", + "static/js/483.b40960b4.chunk.js": "./static/js/483.b40960b4.chunk.js", "static/js/9467.361c4c5c.chunk.js": "./static/js/9467.361c4c5c.chunk.js", "static/js/6895.c8233c8b.chunk.js": "./static/js/6895.c8233c8b.chunk.js", - "static/js/1379.c2ecb9aa.chunk.js": "./static/js/1379.c2ecb9aa.chunk.js", + "static/js/1379.35c4721c.chunk.js": "./static/js/1379.35c4721c.chunk.js", "static/js/8277.ffa83ea5.chunk.js": "./static/js/8277.ffa83ea5.chunk.js", "static/js/4133.9a0577c4.chunk.js": "./static/js/4133.9a0577c4.chunk.js", "static/css/1367.90c9cdc7.chunk.css": "./static/css/1367.90c9cdc7.chunk.css", @@ -90,6 +90,7 @@ "static/js/8350.d0f71354.chunk.js": "./static/js/8350.d0f71354.chunk.js", "static/js/4873.9349e8b2.chunk.js": "./static/js/4873.9349e8b2.chunk.js", "static/js/5367.81c2d437.chunk.js": "./static/js/5367.81c2d437.chunk.js", + "static/js/6405.61f72110.chunk.js": "./static/js/6405.61f72110.chunk.js", "static/js/5223.98f026b3.chunk.js": "./static/js/5223.98f026b3.chunk.js", "static/js/1799.90db5583.chunk.js": "./static/js/1799.90db5583.chunk.js", "static/js/9297.fb2e535e.chunk.js": "./static/js/9297.fb2e535e.chunk.js", @@ -151,7 +152,7 @@ "static/js/2763.d85f5750.chunk.js": "./static/js/2763.d85f5750.chunk.js", "index.html": "./index.html", "main.b20a708b.css.map": "./static/css/main.b20a708b.css.map", - "main.28f60345.js.map": "./static/js/main.28f60345.js.map", + "main.9dec64e0.js.map": "./static/js/main.9dec64e0.js.map", "1260.5248e62a.chunk.js.map": "./static/js/1260.5248e62a.chunk.js.map", "6914.57144791.chunk.js.map": "./static/js/6914.57144791.chunk.js.map", "4209.dd491df8.chunk.js.map": "./static/js/4209.dd491df8.chunk.js.map", @@ -181,7 +182,7 @@ "7821.461c5aa3.chunk.js.map": "./static/js/7821.461c5aa3.chunk.js.map", "2850.90c9cdc7.chunk.css.map": "./static/css/2850.90c9cdc7.chunk.css.map", "2850.8a62b572.chunk.js.map": "./static/js/2850.8a62b572.chunk.js.map", - "4131.864cf81f.chunk.js.map": "./static/js/4131.864cf81f.chunk.js.map", + "4131.739594e9.chunk.js.map": "./static/js/4131.739594e9.chunk.js.map", "343.90c9cdc7.chunk.css.map": "./static/css/343.90c9cdc7.chunk.css.map", "343.34f42ca3.chunk.js.map": "./static/js/343.34f42ca3.chunk.js.map", "1199.90c9cdc7.chunk.css.map": "./static/css/1199.90c9cdc7.chunk.css.map", @@ -189,7 +190,7 @@ "5517.90c9cdc7.chunk.css.map": "./static/css/5517.90c9cdc7.chunk.css.map", "5517.cf7204c7.chunk.js.map": "./static/js/5517.cf7204c7.chunk.js.map", "2555.0dbc9c69.chunk.js.map": "./static/js/2555.0dbc9c69.chunk.js.map", - "7585.862b6eb5.chunk.js.map": "./static/js/7585.862b6eb5.chunk.js.map", + "7585.3ba2ecd7.chunk.js.map": "./static/js/7585.3ba2ecd7.chunk.js.map", "4902.395ae657.chunk.js.map": "./static/js/4902.395ae657.chunk.js.map", "7847.4176f3e5.chunk.js.map": "./static/js/7847.4176f3e5.chunk.js.map", "3097.c51c1e97.chunk.js.map": "./static/js/3097.c51c1e97.chunk.js.map", @@ -209,10 +210,10 @@ "7798.5da0ca4b.chunk.js.map": "./static/js/7798.5da0ca4b.chunk.js.map", "8833.9f18e03b.chunk.js.map": "./static/js/8833.9f18e03b.chunk.js.map", "6526.904dad0c.chunk.js.map": "./static/js/6526.904dad0c.chunk.js.map", - "483.6a2efeb6.chunk.js.map": "./static/js/483.6a2efeb6.chunk.js.map", + "483.b40960b4.chunk.js.map": "./static/js/483.b40960b4.chunk.js.map", "9467.361c4c5c.chunk.js.map": "./static/js/9467.361c4c5c.chunk.js.map", "6895.c8233c8b.chunk.js.map": "./static/js/6895.c8233c8b.chunk.js.map", - "1379.c2ecb9aa.chunk.js.map": "./static/js/1379.c2ecb9aa.chunk.js.map", + "1379.35c4721c.chunk.js.map": "./static/js/1379.35c4721c.chunk.js.map", "8277.ffa83ea5.chunk.js.map": "./static/js/8277.ffa83ea5.chunk.js.map", "4133.9a0577c4.chunk.js.map": "./static/js/4133.9a0577c4.chunk.js.map", "1367.90c9cdc7.chunk.css.map": "./static/css/1367.90c9cdc7.chunk.css.map", @@ -240,6 +241,7 @@ "8350.d0f71354.chunk.js.map": "./static/js/8350.d0f71354.chunk.js.map", "4873.9349e8b2.chunk.js.map": "./static/js/4873.9349e8b2.chunk.js.map", "5367.81c2d437.chunk.js.map": "./static/js/5367.81c2d437.chunk.js.map", + "6405.61f72110.chunk.js.map": "./static/js/6405.61f72110.chunk.js.map", "5223.98f026b3.chunk.js.map": "./static/js/5223.98f026b3.chunk.js.map", "1799.90db5583.chunk.js.map": "./static/js/1799.90db5583.chunk.js.map", "9297.fb2e535e.chunk.js.map": "./static/js/9297.fb2e535e.chunk.js.map", @@ -302,6 +304,6 @@ }, "entrypoints": [ "static/css/main.b20a708b.css", - "static/js/main.28f60345.js" + "static/js/main.9dec64e0.js" ] } \ No newline at end of file diff --git a/portal-ui/build/index.html b/portal-ui/build/index.html index 33cd1c881..8c0a8c0dd 100644 --- a/portal-ui/build/index.html +++ b/portal-ui/build/index.html @@ -1 +1 @@ -MinIO Console
\ No newline at end of file +MinIO Console
\ No newline at end of file diff --git a/portal-ui/build/static/js/1379.35c4721c.chunk.js b/portal-ui/build/static/js/1379.35c4721c.chunk.js new file mode 100644 index 000000000..c2cb5ae1b --- /dev/null +++ b/portal-ui/build/static/js/1379.35c4721c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1379],{41379:function(e,n,t){t.r(n),t.d(n,{default:function(){return Qn}});var i=t(1413),o=t(72791),a=t(60364),s=t(16871),r=t(11135),c=t(25787),l=t(61889),d=t(25469),u=t(23814),h=t(93433),m=t(29439),f=t(57831),p=t(75952),x=t(26181),v=t.n(x),b=t(81207),g=t(92983),j=t(45248),Z=t(20890),S=t(84697),w=t(78029),C=t.n(w),_=t(43504),T=t(13400),E=t(38734),y=t(38442),N=t(56087),I=t(75578),k=t(87995),F=t(54756),O=t(27454),P=t(80184),L=(0,I.Z)(o.lazy((function(){return t.e(2185).then(t.bind(t,62185))}))),D=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)({},u.cx),{},{slashSpacingStyle:{margin:"0 5px"}}))}))((function(e){var n=e.classes,t=e.bucketName,i=e.internalPaths,r=e.existingFiles,c=e.hidePathButton,u=e.additionalOptions,f=(0,d.TL)(),x=(0,s.s0)(),v=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),b=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),g=(0,a.v9)((function(e){return e.objectBrowser.versionedFile})),Z=(0,o.useState)(!1),S=(0,m.Z)(Z,2),w=S[0],I=S[1],D=(0,y.F)(t,[N.Ft.S3_PUT_OBJECT]),B=i;""!==i&&(B="/".concat(i));var R=B.split("/").filter((function(e){return""!==e})),z=R.length-1,M=R.map((function(e,i){var a="".concat(R.slice(0,i+1).join("/"),"/"),s="/buckets/".concat(t,"/browse/").concat(a?"".concat((0,j.LL)(a)):"");return i===z&&e===g?null:(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)("span",{className:n.slashSpacingStyle,children:"/"}),i===z?(0,P.jsx)("span",{style:{cursor:"default"},children:e}):(0,P.jsx)(_.rU,{to:s,onClick:function(){f((0,F.db)({status:!1,objectName:""}))},children:e})]},"breadcrumbs-".concat(i.toString()))})),A=[];b&&(A=[(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)("span",{children:[(0,P.jsx)("span",{className:n.slashSpacingStyle,children:"/"}),g," - Versions"]})},"breadcrumbs-versionedItem")]);var U=[(0,P.jsx)(o.Fragment,{children:(0,P.jsx)(_.rU,{to:"/buckets/".concat(t,"/browse"),onClick:function(){f((0,F.db)({status:!1,objectName:""}))},children:t})},"breadcrumbs-root-path")].concat((0,h.Z)(M),(0,h.Z)(A));return(0,P.jsxs)(o.Fragment,{children:[(0,P.jsxs)("div",{className:n.breadcrumbsMain,children:[w&&(0,P.jsx)(L,{modalOpen:w,bucketName:t,folderName:i,onClose:function(){I(!1)},existingFiles:r}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.breadcrumbs),children:[(0,P.jsx)(T.Z,{onClick:function(){b?f((0,F.db)({status:!1,objectName:""})):x(-1)},sx:{border:"#EAEDEE 1px solid",backgroundColor:"#fff",borderLeft:0,borderRadius:0,width:38,height:38,marginRight:"10px"},children:(0,P.jsx)(E.ubh,{})}),(0,P.jsx)("div",{className:n.breadcrumbsList,dir:"rtl",children:U}),(0,P.jsx)(C(),{text:"".concat(t,"/").concat(R.join("/")),children:(0,P.jsx)(p.z,{id:"copy-path",icon:(0,P.jsx)(E.TIy,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:function(){f((0,k.y1)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,P.jsx)("div",{className:n.additionalOptions,children:u})]}),!c&&(0,P.jsx)(O.Z,{tooltip:D?"Choose or create a new path":(0,N.MK)([N.Ft.S3_PUT_OBJECT],"create a new path"),children:(0,P.jsx)(p.z,{id:"new-path",onClick:function(){I(!0)},disabled:v||!D,icon:(0,P.jsx)(E.N$q,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,P.jsx)("div",{className:n.breadcrumbsSecond,children:u})]})})),B=t(47922),R=t(14917),z=t(74794),M=t(71715),A=t(23786),U=t(49900),G=t(57064),K=(0,c.Z)((function(e){return(0,r.Z)({listUploadIcons:{height:20,"& .min-icon":{width:18,fill:"rgba(0,0,0,0.87)"}}})}))((function(e){var n=e.uploadPath,t=e.bucketName,i=e.forceDisable,a=void 0!==i&&i,s=e.uploadFileFunction,r=e.uploadFolderFunction,c=e.classes,l=o.useState(null),d=(0,m.Z)(l,2),u=d[0],h=d[1],f=Boolean(u),x=function(){h(null)},v=(0,y.F)(n,[N.Ft.S3_PUT_OBJECT]),b=(0,y.F)(t,[N.Ft.S3_PUT_OBJECT],!1,!0),g=v||b;return(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)(O.Z,{tooltip:g?"Upload Files":(0,N.MK)([N.Ft.S3_PUT_OBJECT],"upload files to this bucket"),children:(0,P.jsx)(p.z,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:function(e){h(e.currentTarget)},label:"Upload",icon:(0,P.jsx)(E.rG2,{}),variant:"callAction",disabled:a||!g})}),(0,P.jsxs)(M.Z,{id:"upload-main-menu","aria-labelledby":"upload-main",anchorEl:u,open:f,onClose:function(){x()},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[(0,P.jsxs)(A.Z,{onClick:function(){s(x)},disabled:!v||a,children:[(0,P.jsx)(G.Z,{className:c.listUploadIcons,children:(0,P.jsx)(E.rG2,{})}),(0,P.jsx)(U.Z,{children:"Upload File"})]}),(0,P.jsxs)(A.Z,{onClick:function(){r(x)},disabled:!b||a,children:[(0,P.jsx)(G.Z,{className:c.listUploadIcons,children:(0,P.jsx)(E.oXh,{})}),(0,P.jsx)(U.Z,{children:"Upload Folder"})]})]})]})})),W=t(72455),H=(0,W.Z)((function(e){return(0,r.Z)({detailsList:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},closePanel:{position:"absolute",right:0,top:8,"& .min-icon":{width:14}}})})),V=function(e){var n=e.open,t=e.closePanel,i=e.className,o=void 0===i?"":i,a=e.children,s=H();return(0,P.jsxs)(l.ZP,{item:!0,className:"".concat(s.detailsList," ").concat(n?"open":""," ").concat(o," detailsListPanel"),children:[(0,P.jsx)(T.Z,{onClick:t,className:s.closePanel,children:(0,P.jsx)(E.oto,{})}),a]})},J=t(64554),Y=t(25183),q=t(34433),X=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],$=Array.from(Array(31),(function(e,n){return n+1})),Q=(new Date).getFullYear(),ee=Array.from(Array(25),(function(e,n){return n+Q})),ne=t(56028),te=t(37516),ie=t(83679),oe=t(4942),ae=t(28182),se=t(30829),re=t(20068),ce=t(68096),le=t(58406),de=t(4834),ue=t(84570),he=(0,c.Z)((function(e){return(0,r.Z)({root:{"& .MuiSelect-icon":{color:"#000","&.Mui-disabled":{color:"#9c9c9c"}}},input:{borderBottom:0,fontSize:12}})}))(de.ZP),me=(0,o.forwardRef)((function(e,n){var t=e.classes,i=e.id,a=e.label,s=e.disableOptions,r=void 0!==s&&s,c=e.addSwitch,d=void 0!==c&&c,u=e.tooltip,h=void 0===u?"":u,f=e.borderBottom,p=void 0!==f&&f,x=e.onDateChange,v=e.value,b=void 0===v?"":v;(0,o.useImperativeHandle)(n,(function(){return{resetDate:D}}));var g=(0,o.useState)(!1),j=(0,m.Z)(g,2),Z=j[0],S=j[1],w=(0,o.useState)(""),C=(0,m.Z)(w,2),_=C[0],T=C[1],E=(0,o.useState)(""),y=(0,m.Z)(E,2),N=y[0],I=y[1],k=(0,o.useState)(""),F=(0,m.Z)(k,2),O=F[0],L=F[1];(0,o.useEffect)((function(){if(""!==b){var e=b.split("-");L(e[0]),T(e[1]),I("".concat(parseInt(e[2])))}}),[b]),(0,o.useEffect)((function(){var e=function(e,n,t){var i=Date.parse("".concat(e,"-").concat(n,"-").concat(t));if(isNaN(i))return[!1,""];var o=parseInt(n),a=parseInt(t),s=o<10?"0".concat(o):o,r=a<10?"0".concat(a):a,c=new Date(i).toISOString().split("T")[0],l="".concat(e,"-").concat(s,"-").concat(r);return[c===l,l]}(O,_,N),n=(0,m.Z)(e,2),t=n[0],i=n[1];x(i,t)}),[_,N,O,x]);var D=function(){T(""),I(""),L("")},B=function(){return r||!!d&&!Z};return(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:(0,ae.Z)(t.fieldContainer,(0,oe.Z)({},t.fieldContainerBorder,p)),children:[(0,P.jsx)("div",{className:t.labelContainer,children:(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsxs)(se.Z,{htmlFor:i,className:t.inputLabel,children:[(0,P.jsx)("span",{children:a}),""!==h&&(0,P.jsx)("div",{className:t.tooltipContainer,children:(0,P.jsx)(re.Z,{title:h,placement:"top-start",children:(0,P.jsx)("div",{className:t.tooltip,children:(0,P.jsx)(ue.Z,{})})})})]}),d&&(0,P.jsx)(te.Z,{indicatorLabels:["Specific Date","Default (7 Days)"],checked:Z,value:"date_enabled",id:"date-status",name:"date-status",onChange:function(e){S(e.target.checked),e.target.checked||x("",!0)},switchOnly:!0})]})}),(0,P.jsxs)("div",{children:[(0,P.jsx)(ce.Z,{disabled:B(),className:t.dateInput,children:(0,P.jsxs)(le.Z,{id:"".concat(i,"-month"),name:"".concat(i,"-month"),value:_,displayEmpty:!0,onChange:function(e){T(e.target.value)},input:(0,P.jsx)(he,{}),children:[(0,P.jsx)(A.Z,{value:"",disabled:!0,children:""}),X.map((function(e){return(0,P.jsx)(A.Z,{value:e.value,children:e.label},"select-".concat(i,"-monthOP-").concat(e.label))}))]})}),(0,P.jsx)(ce.Z,{disabled:B(),className:t.dateInput,children:(0,P.jsxs)(le.Z,{id:"".concat(i,"-day"),name:"".concat(i,"-day"),value:N,displayEmpty:!0,onChange:function(e){I(e.target.value)},input:(0,P.jsx)(he,{}),children:[(0,P.jsx)(A.Z,{value:"",disabled:!0,children:""}),$.map((function(e){return(0,P.jsx)(A.Z,{value:e,children:e},"select-".concat(i,"-dayOP-").concat(e))}))]})}),(0,P.jsx)(ce.Z,{disabled:B(),className:t.dateInput,children:(0,P.jsxs)(le.Z,{id:"".concat(i,"-year"),name:"".concat(i,"-year"),value:O,displayEmpty:!0,onChange:function(e){L(e.target.value)},input:(0,P.jsx)(he,{}),children:[(0,P.jsx)(A.Z,{value:"",disabled:!0,children:""}),ee.map((function(e){return(0,P.jsx)(A.Z,{value:e,children:e},"select-".concat(i,"-yearOP-").concat(e))}))]})})]})]})})),fe=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({dateInput:{"&:not(:last-child)":{marginRight:22}}},u.YI),u.Hr),{},{labelContainer:{flex:1},fieldContainer:(0,i.Z)((0,i.Z)({},u.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),fieldContainerBorder:{borderBottom:"#9c9c9c 1px solid",marginBottom:20}}))}))(me),pe=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK),{},{dateSelector:{"& div":{borderBottom:0,marginBottom:0,"& div:nth-child(2)":{border:"1px solid #EAEAEA",paddingLeft:5,"& div":{border:0}}}}}))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,a=e.objectName,s=e.objectInfo,r=e.bucketName,c=(0,d.TL)(),u=(0,o.useState)(!0),h=(0,m.Z)(u,2),f=h[0],x=h[1],v=(0,o.useState)(""),g=(0,m.Z)(v,2),Z=g[0],S=g[1],w=(0,o.useState)(""),C=(0,m.Z)(w,2),_=C[0],T=C[1],E=(0,o.useState)(!1),y=(0,m.Z)(E,2),N=y[0],I=y[1],F=(0,o.useState)(!1),O=(0,m.Z)(F,2),L=O[0],D=O[1],B=(0,o.useState)(!1),R=(0,m.Z)(B,2),z=R[0],M=R[1];(0,o.useEffect)((function(){if(s.retention_mode&&(S(s.retention_mode.toLowerCase()),M(!0)),s.retention_until_date){var e=new Date(s.retention_until_date);if("Invalid Date"!==e.toString()){var n=e.getFullYear(),t=(o=e.getMonth()+1)<10?"0".concat(o):"".concat(o),i=e.getDate();isNaN(i)||"NaN"===t||isNaN(n)||T("".concat(n,"-").concat(t,"-").concat(i))}M(!0)}var o}),[s]);var A=(0,o.useRef)(null),U=function(){x(!1),S(""),A.current&&A.current.resetDate()},G=z&&("governance"===Z||""===Z);return(0,P.jsxs)(ne.Z,{title:"Set Retention Policy",modalOpen:t,onClose:function(){U(),i(!1)},children:[(0,P.jsxs)("div",{className:n.spacerBottom,children:[(0,P.jsx)("strong",{children:"Selected Object"}),": ",a]}),(0,P.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:[G&&(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(te.Z,{value:"status",id:"status",name:"status",checked:f,onChange:function(e){x(!f)},label:"Status",indicatorLabels:["Enabled","Disabled"]})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(ie.Z,{currentSelection:Z,id:"type",name:"type",label:"Type",disableOptions:!f||z&&""!==Z,onChange:function(e){S(e.target.value)},selectorOptions:[{label:"Governance",value:"governance"},{label:"Compliance",value:"compliance"}]})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(n.dateSelector," "),children:(0,P.jsx)(fe,{id:"date",label:"Date",disableOptions:!(f&&("governance"===Z||"compliance"===Z)),ref:A,value:_,borderBottom:!0,onDateChange:function(e,n){I(n),n&&T(e)}})}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,P.jsx)(p.z,{id:"reset",type:"button",variant:"regular",onClick:U,label:"Reset"}),(0,P.jsx)(p.z,{id:"save",type:"submit",variant:"callAction",disabled:f&&""===Z||f&&!N||L,onClick:function(){D(!0);var e=s.name,n=s.version_id,t=f||"governance"!==Z?"".concat(_,"T23:59:59Z"):"";f||"governance"!==Z?function(e,n,t){b.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/objects/retention?prefix=").concat((0,j.LL)(e),"&version_id=").concat(n),{expires:t,mode:Z}).then((function(e){D(!1),i(!0)})).catch((function(e){c((0,k.zb)(e)),D(!1)}))}(e,n,t):function(e,n){b.Z.invoke("DELETE","/api/v1/buckets/".concat(r,"/objects/retention?prefix=").concat((0,j.LL)(e),"&version_id=").concat(n)).then((function(){D(!1),i(!0)})).catch((function(e){c((0,k.zb)(e)),D(!1)}))}(e,n)},label:"Save"})]})]})]})})),xe=t(51691),ve=t(23508),be=t(9505),ge=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,a=e.selectedObject,s=e.versioning,r=e.selectedVersion,c=void 0===r?"":r,l=(0,d.TL)(),u=(0,be.Z)((function(){return n(!0)}),(function(e){return l((0,k.Ih)(e))})),h=(0,m.Z)(u,2),f=h[0],p=h[1],x=(0,o.useState)(!1),v=(0,m.Z)(x,2),b=v[0],g=v[1];if(!a)return null;return(0,P.jsx)(ve.Z,{title:"Delete Object",confirmText:"Delete",isOpen:t,titleIcon:(0,P.jsx)(E.NvT,{}),isLoading:f,onConfirm:function(){var e=(0,j.IO)(a).endsWith("/");p("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(a).concat(""!==c?"&version_id=".concat(c):"&recursive=".concat(e,"&all_versions=").concat(b)))},onClose:function(){return n(!1)},confirmationContent:(0,P.jsxs)(xe.Z,{children:["Are you sure you want to delete: ",(0,P.jsx)("br",{}),(0,P.jsx)("b",{children:(0,j.IO)(a)})," ",""!==c?(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)("br",{}),(0,P.jsx)("br",{}),"Version ID:",(0,P.jsx)("br",{}),(0,P.jsx)("strong",{children:c})]}):"","? ",(0,P.jsx)("br",{}),(0,P.jsx)("br",{}),s&&""===c&&(0,P.jsx)(te.Z,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:b,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:function(e){g(!b)},description:""})]})})},je=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,a=e.objectName,s=e.bucketName,r=e.actualInfo,c=(0,d.TL)(),u=(0,o.useState)(!1),h=(0,m.Z)(u,2),f=h[0],x=h[1],g=(0,o.useState)(!1),Z=(0,m.Z)(g,2),S=Z[0],w=Z[1],C=r.version_id;(0,o.useEffect)((function(){var e=v()(r,"legal_hold_status","OFF");x("ON"===e)}),[r]);var _=function(){x(!1)};return(0,P.jsxs)(ne.Z,{title:"Set Legal Hold",modalOpen:t,onClose:function(){_(),i(!1)},children:[(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.spacerBottom,children:["Object: ",s]}),(0,P.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),w(!0),b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/legalhold?prefix=").concat((0,j.LL)(a),"&version_id=").concat(C),{status:f?"enabled":"disabled"}).then((function(){w(!1),i(!0)})).catch((function(e){c((0,k.zb)(e)),w(!1)}))}(e)},children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,P.jsx)(te.Z,{value:"legalhold",id:"legalhold",name:"legalhold",checked:f,onChange:function(e){x(!f)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"})}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,P.jsx)(p.z,{id:"clear",type:"button",variant:"regular",onClick:_,label:"Clear"}),(0,P.jsx)(p.z,{id:"save",type:"submit",variant:"callAction",disabled:S,label:" Save"})]})]})]})})),Ze=t(78562),Se=t(79836),we=t(53382),Ce=t(35855),_e=t(53994),Te=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)({propertiesIcon:{marginLeft:5,"& .min-icon":{height:12}},capitalizeFirst:{textTransform:"capitalize","& .min-icon":{width:16,height:16}},titleItem:{width:"35%"}},u.bK),u.$b))}))((function(e){var n=e.bucketName,t=e.internalPaths,i=e.classes,a=e.actualInfo,s=e.linear,r=void 0!==s&&s,c=(0,o.useState)({}),d=(0,m.Z)(c,2),u=d[0],h=d[1],f=(0,be.Z)((function(e){var n=v()(e,"objectMetadata",{});h(n)}),(function(e){return!1})),p=(0,m.Z)(f,2)[1],x=Object.keys(u),b=(0,o.useCallback)((function(){p("GET","/api/v1/buckets/".concat(n,"/objects/metadata?prefix=").concat(t))}),[n,t,a]);return(0,o.useEffect)((function(){a&&b()}),[a,b]),r?(0,P.jsx)(o.Fragment,{children:x.map((function(e,n){var t=Array.isArray(u[e])?u[e].map(decodeURIComponent).join(", "):decodeURIComponent(u[e]);return(0,P.jsxs)(J.Z,{className:i.metadataLinear,children:[(0,P.jsx)("strong",{children:e}),(0,P.jsx)("br",{}),t]},"box-meta-".concat(e,"-").concat(n.toString()))}))}):(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,sx:{marginTop:"25px",marginBottom:"5px"},children:(0,P.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Object Metadata"})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,children:(0,P.jsx)(Se.Z,{className:i.table,"aria-label":"simple table",children:(0,P.jsx)(we.Z,{children:x.map((function(e,n){var t=Array.isArray(u[e])?u[e].map(decodeURIComponent).join(", "):decodeURIComponent(u[e]);return(0,P.jsxs)(Ce.Z,{children:[(0,P.jsx)(_e.Z,{component:"th",scope:"row",className:i.titleItem,children:e}),(0,P.jsx)(_e.Z,{align:"right",children:t})]},"tRow-".concat(n.toString()))}))})})})]})})),Ee=t(45987),ye=t(36151),Ne=["disabled","onClick","icon","label","classes"],Ie=(0,c.Z)((function(e){return(0,r.Z)({root:{padding:"0 15px",height:22,margin:0,color:"#5E5E5E",fontWeight:"normal",fontSize:14,whiteSpace:"nowrap",width:"100%",justifyContent:"flex-start","&:hover":{backgroundColor:"transparent",color:"#000"},"& .min-icon":{width:11},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}}})}))((function(e){var n=e.disabled,t=e.onClick,o=e.icon,a=e.label,s=e.classes,r=(0,Ee.Z)(e,Ne);return(0,P.jsx)(ye.Z,(0,i.Z)((0,i.Z)({},r),{},{disabled:n,onClick:t,className:(0,ae.Z)(s.root,"noDefaultHeight"),startIcon:o,sx:{height:"initial"},children:(0,P.jsx)("span",{className:"buttonItem",children:a})}))})),ke=(0,c.Z)((function(){return(0,r.Z)((0,i.Z)({},u.$b))}))((function(e){var n=e.items,t=e.classes,i=e.title;return(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)("div",{className:t.titleLabel,children:i}),(0,P.jsxs)("ul",{className:t.objectActions,children:[(0,P.jsx)("li",{children:"Actions:"}),n.map((function(e,n){return(0,P.jsx)("li",{children:(0,P.jsx)(O.Z,{tooltip:e.tooltip||"",children:(0,P.jsx)(Ie,{label:e.label,icon:e.icon,onClick:e.action,disabled:e.disabled})})},"action-element-".concat(n.toString()))}))]})]})})),Fe=t(37762),Oe=t(71863),Pe=t(82314),Le=(0,c.Z)((function(e){return(0,r.Z)({fileName:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16}},fileNameText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}})}))((function(e){var n=e.classes,t=e.icon,i=e.strings;return(0,P.jsxs)("div",{className:n.fileName,children:[t,(0,P.jsx)("span",{className:n.fileNameText,children:i[i.length-1]})]})})),De=o.lazy((function(){return Promise.resolve().then(t.bind(t,76181))})),Be=o.lazy((function(){return Promise.resolve().then(t.bind(t,49563))})),Re=o.lazy((function(){return Promise.resolve().then(t.bind(t,21733))})),ze=o.lazy((function(){return Promise.resolve().then(t.bind(t,95232))})),Me=o.lazy((function(){return Promise.resolve().then(t.bind(t,27529))})),Ae=o.lazy((function(){return Promise.resolve().then(t.bind(t,60527))})),Ue=o.lazy((function(){return Promise.resolve().then(t.bind(t,69812))})),Ge=o.lazy((function(){return Promise.resolve().then(t.bind(t,46454))})),Ke=o.lazy((function(){return Promise.resolve().then(t.bind(t,84820))})),We=o.lazy((function(){return Promise.resolve().then(t.bind(t,40599))})),He=o.lazy((function(){return Promise.resolve().then(t.bind(t,72995))})),Ve=o.lazy((function(){return Promise.resolve().then(t.bind(t,34171))})),Je=o.lazy((function(){return Promise.resolve().then(t.bind(t,30745))})),Ye=o.lazy((function(){return Promise.resolve().then(t.bind(t,84033))})),qe=o.lazy((function(){return Promise.resolve().then(t.bind(t,52009))})),Xe=[{icon:(0,P.jsx)(Je,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,P.jsx)(Ke,{}),extensions:["mp3","m4a","aac"]},{icon:(0,P.jsx)(We,{}),extensions:["pdf"]},{icon:(0,P.jsx)(He,{}),extensions:["ppt","pptx"]},{icon:(0,P.jsx)(Ye,{}),extensions:["xls","xlsx"]},{icon:(0,P.jsx)(Ue,{}),extensions:["cer","crt","pem"]},{icon:(0,P.jsx)(Be,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,P.jsx)(Re,{}),extensions:["cfg","yaml"]},{icon:(0,P.jsx)(ze,{}),extensions:["sql"]},{icon:(0,P.jsx)(Me,{}),extensions:["ttf","otf"]},{icon:(0,P.jsx)(Ve,{}),extensions:["txt"]},{icon:(0,P.jsx)(qe,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,P.jsx)(De,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,P.jsx)(Ae,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],$e=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=e,i=(0,P.jsx)(Oe.Z,{});e.endsWith("/")&&(i=(0,P.jsx)(Pe.Z,{}),t=e.slice(0,-1));var o,a=e.toLowerCase(),s=(0,Fe.Z)(Xe);try{for(s.s();!(o=s.n()).done;){var r,c=o.value,l=(0,Fe.Z)(c.extensions);try{for(l.s();!(r=l.n()).done;){var d=r.value;a.endsWith(".".concat(d))&&(i=c.icon)}}catch(h){l.e(h)}finally{l.f()}}}catch(h){s.e(h)}finally{s.f()}!e.endsWith("/")&&e.indexOf(".")<0&&(i=(0,P.jsx)(Ge,{}));var u=t.split("/");return n?i:(0,P.jsx)(Le,{icon:i,strings:u})},Qe=t(21435),en=t(81918),nn=t(29823),tn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({newTileHeader:{fontSize:18,fontWeight:"bold",color:"#000",margin:"35px 0",paddingBottom:15,display:"flex",alignItems:"center","& > svg":{marginRight:10}},tagsForLabel:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},currentTagsContainer:{fontSize:14,fontWeight:"normal"},noTagsForObject:{color:"#858585"},deleteTag:{color:"#C83B51",marginLeft:5}},u.DF),u.ID),u.bK))}))((function(e){var n=e.modalOpen,t=e.onCloseAndUpdate,s=e.bucketName,r=e.actualInfo,c=e.classes,u=(0,d.TL)(),h=(0,a.v9)(k.N5),f=(0,o.useState)(""),x=(0,m.Z)(f,2),g=x[0],Z=x[1],S=(0,o.useState)(""),w=(0,m.Z)(S,2),C=w[0],_=w[1],T=(0,o.useState)(!1),I=(0,m.Z)(T,2),F=I[0],O=I[1],L=(0,o.useState)(!1),D=(0,m.Z)(L,2),B=D[0],R=D[1],z=(0,o.useState)(""),M=(0,m.Z)(z,2),A=M[0],U=M[1],G=(0,o.useState)(""),K=(0,m.Z)(G,2),W=K[0],H=K[1],V=(0,j.LL)(r.name),Y=r.tags,q=Object.keys(Y||{}),X=r.name.split("/").pop()||"",$=function(e){return(0,P.jsxs)("div",{className:c.tagsForLabel,children:["Tag",e?"s":""," for: ",(0,P.jsx)("strong",{children:X})]})};return(0,P.jsx)(o.Fragment,{children:(0,P.jsx)(ne.Z,{modalOpen:n,title:B?(0,P.jsx)("span",{style:{color:"#C83B51"},children:"Delete Tag"}):"Edit Tags",onClose:function(){t(!0)},titleIcon:B?(0,P.jsx)(E.dRf,{style:{fill:"#C83B51"}}):(0,P.jsx)(E.T0F,{}),children:B?(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)(l.ZP,{container:!0,children:[$(!1),"Are you sure you want to delete the tag"," ",(0,P.jsxs)("b",{className:c.deleteTag,children:[A," : ",W]})," ","?",(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,P.jsx)(p.z,{id:"cancel",type:"button",variant:"regular",onClick:function(){U(""),H(""),R(!1)},label:"Cancel"}),(0,P.jsx)(p.z,{type:"submit",variant:"secondary",onClick:function(){var e=(0,i.Z)({},Y);delete e[A];var n=h?r.version_id:"null";b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/tags?prefix=").concat(V,"&version_id=").concat(n),{tags:e}).then((function(e){t(!0),O(!1)})).catch((function(e){u((0,k.zb)(e)),O(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsx)(y.s,{scopes:[N.Ft.S3_GET_OBJECT_TAGGING],resource:s,children:(0,P.jsxs)(J.Z,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[$(!0),(0,P.jsxs)("div",{className:c.currentTagsContainer,children:["Current Tags:",(0,P.jsx)("br",{}),0===q.length?(0,P.jsx)("span",{className:c.noTagsForObject,children:"There are no tags for this object"}):(0,P.jsx)(o.Fragment,{}),(0,P.jsx)(J.Z,{sx:{marginTop:"5px",marginBottom:"15px"},children:q.map((function(e,n){var t=v()(Y,"".concat(e),"");return""!==t?(0,P.jsx)(y.s,{scopes:[N.Ft.S3_DELETE_OBJECT_TAGGING],resource:s,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,P.jsx)(en.Z,{style:{textTransform:"none",marginRight:"5px",marginBottom:"5px"},size:"small",label:"".concat(e," : ").concat(t),color:"primary",deleteIcon:(0,P.jsx)(nn.Z,{}),onDelete:function(){!function(e,n){U(e),H(n),R(!0)}(e,t)}})},"chip-".concat(n)):null}))})]})]})}),(0,P.jsx)(y.s,{scopes:[N.Ft.S3_PUT_OBJECT_TAGGING],resource:s,errorProps:{disabled:!0,onClick:null},children:(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:c.newTileHeader,children:[(0,P.jsx)(E.OCT,{})," Add New Tag"]}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,P.jsx)(Qe.Z,{value:g,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:function(e){Z(e.target.value)}})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,P.jsx)(Qe.Z,{value:C,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:function(e){_(e.target.value)}})}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,P.jsx)(p.z,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){_(""),Z("")},label:"Clear"}),(0,P.jsx)(p.z,{type:"submit",variant:"callAction",disabled:""===C.trim()||""===g.trim()||F,onClick:function(){O(!0);var e={};e[g]=C;var n=(0,i.Z)((0,i.Z)({},Y),e),o=h?r.version_id:"null";b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/tags?prefix=").concat(V,"&version_id=").concat(o),{tags:n}).then((function(e){t(!0),O(!1)})).catch((function(e){u((0,k.zb)(e)),O(!1)}))},id:"saveTag",label:"Save"})]})]})})]})})})})),on=t(74165),an=t(15861),sn=t(73669),rn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.closeInspectModalAndRefresh,i=e.inspectOpen,a=e.inspectPath,s=e.volumeName,r=(0,d.TL)(),c=function(){return t(!1)},u=(0,o.useState)(!0),h=(0,m.Z)(u,2),f=h[0],x=h[1],v=(0,o.useState)(""),b=(0,m.Z)(v,2),g=b[0],Z=b[1],S=(0,o.useState)(""),w=(0,m.Z)(S,2),C=w[0],_=w[1];if(!a)return null;var T=function(){var e=(0,an.Z)((0,on.Z)().mark((function e(n){return(0,on.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(n,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),y=function(){var e=(0,an.Z)((0,on.Z)().mark((function e(){var n,t,i;return(0,on.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,j.LL)(a+"/xl.meta"),t=(0,j.LL)(s),i="/api/v1/admin/inspect?volume=".concat(t,"&file=").concat(n,"&encrypt=").concat(f),T(i).then(function(){var e=(0,an.Z)((0,on.Z)().mark((function e(n){var t,i,o,a;return(0,on.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.ok){e.next=5;break}return e.next=3,n.json();case 3:t=e.sent,r((0,k.Ih)({errorMessage:t.message,detailedError:t.code}));case 5:return e.next=7,n.blob();case 7:if(i=e.sent,o=n.headers.get("content-disposition").split('"')[1],a=(0,j.Do)(o)||"",(0,j.zZ)(i,o),_(o),""!==a){e.next=15;break}return c(),e.abrupt("return");case 15:Z(a);case 16:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()).catch((function(e){r((0,k.Ih)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,P.jsxs)(o.Fragment,{children:[!g&&(0,P.jsx)(ne.Z,{modalOpen:i,titleIcon:(0,P.jsx)(Y.Gp,{}),title:"Inspect Object",onClose:c,children:(0,P.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:["Would you like to encrypt ",(0,P.jsx)("b",{children:(0,j.IO)(a)}),"?"," ",(0,P.jsx)("br",{}),(0,P.jsx)(te.Z,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:f,value:"encrypt",id:"encrypt",name:"encrypt",onChange:function(e){x(!f)},description:""}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,P.jsx)(p.z,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:y,label:"Inspect"})})]})}),g?(0,P.jsx)(ne.Z,{modalOpen:i,title:"Inspect Decryption Key",onClose:function(){(0,j.kT)(C),c(),Z("")},titleIcon:(0,P.jsx)(E.tvm,{}),children:(0,P.jsxs)(xe.Z,{children:[(0,P.jsxs)(J.Z,{children:["This will be displayed only once. It cannot be recovered.",(0,P.jsx)("br",{}),"Use secure medium to share this key."]}),(0,P.jsx)(J.Z,{children:(0,P.jsx)(sn.Z,{value:g})})]})}):null]})})),cn=t(72401),ln=t(76610),dn=(0,W.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.ID),u.DF),u.bK),(0,u.Bz)(e.spacing(4))))})),un=function(e){var n=e.open,t=e.closeModal,i=e.currentItem,a=e.internalPaths,s=e.actualInfo,r=e.bucketName,c=dn(),u=(0,d.TL)(),h=(0,o.useState)(i),f=(0,m.Z)(h,2),x=f[0],v=f[1],b=(0,o.useState)(!1),g=(0,m.Z)(b,2),Z=g[0],S=g[1];return(0,P.jsxs)(ne.Z,{title:"Rename Download",modalOpen:n,onClose:t,titleIcon:(0,P.jsx)(E.dY8,{}),children:[(0,P.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,P.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,P.jsx)("br",{}),(0,P.jsx)("br",{})," We recommend to rename the file download"]}),(0,P.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();var n=(0,j.LL)("".concat(r,"-").concat(s.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ln.YO)(8),o=(0,B.LR)(r,a,s.version_id,parseInt(s.size||"0"),x,i,(function(e){u((0,F.RO)({instanceID:n,progress:e}))}),(function(){u((0,F.oK)(n))}),(function(e){u((0,F.qJ)({instanceID:n,msg:e}))}),(function(){u((0,F.Im)(n))}));(0,ln.EN)(i,o),u((0,F.Mc)({ID:i,bucketName:r,done:!1,instanceID:n,percentage:0,prefix:x,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""})),t()}(e)},children:(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalFormScrollable,children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,P.jsx)(Qe.Z,{id:"download-filename",name:"download-filename",onChange:function(e){v(e.target.value)},label:"",type:"text",value:x,error:x.length>200&&!Z?"Filename should be less than 200 characters long.":""})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,P.jsx)(te.Z,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:Z,onChange:function(e){S(e.target.checked),e.target.checked&&v(i)},label:"Use Original Name"})})]}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:(0,P.jsx)(p.z,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:x.length>200&&!Z,label:"Download File"})})]})})]})},hn={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},mn=(0,c.Z)((function(){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({ObjectDetailsTitle:{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},objectNameContainer:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},headerForSection:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:15,borderBottom:"#E2E2E2 2px solid",fontWeight:"bold",fontSize:18,color:"#000",margin:"20px 22px"},capitalizeFirst:{textTransform:"capitalize"}},u.Si),u.OR),u.bK),u.VI),u.$b))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=e.versioning,r=e.locking,c=e.onClosePanel,u=(0,d.TL)(),h=(0,a.v9)(k.N5),f=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),x=(0,a.v9)((function(e){return e.objectBrowser.selectedVersion})),g=(0,a.v9)((function(e){return e.objectBrowser.loadingObjectInfo})),Z=(0,o.useState)(!1),S=(0,m.Z)(Z,2),w=S[0],C=S[1],_=(0,o.useState)(!1),T=(0,m.Z)(_,2),I=T[0],L=T[1],D=(0,o.useState)(!1),R=(0,m.Z)(D,2),z=R[0],M=R[1],A=(0,o.useState)(!1),U=(0,m.Z)(A,2),G=U[0],K=U[1],W=(0,o.useState)(!1),H=(0,m.Z)(W,2),V=H[0],X=H[1],$=(0,o.useState)(null),Q=(0,m.Z)($,2),ee=Q[0],ne=Q[1],te=(0,o.useState)([]),ie=(0,m.Z)(te,2),oe=ie[0],ae=ie[1],se=(0,o.useState)(null),re=(0,m.Z)(se,2),ce=re[0],le=re[1],de=(0,o.useState)([]),ue=(0,m.Z)(de,2),he=ue[0],me=ue[1],fe=(0,o.useState)(!1),xe=(0,m.Z)(fe,2),ve=xe[0],be=xe[1],Se=(0,o.useState)(!1),we=(0,m.Z)(Se,2),Ce=we[0],_e=we[1],Ee=(0,o.useState)(0),ye=(0,m.Z)(Ee,2),Ne=ye[0],Ie=ye[1],Fe=(0,o.useState)(!1),Oe=(0,m.Z)(Fe,2),Pe=Oe[0],Le=Oe[1],De=((0,j.IO)(t)||"").split("/").pop()||"",Be=[];ee&&(Be=ee.name.split("/")),(0,o.useEffect)((function(){if(h&&oe&&oe.length>=1){var e=oe.find((function(e){return e.is_latest}))||hn;""!==x&&(e=oe.find((function(e){return e.version_id===x}))||hn),ne(e)}}),[x,h,oe]),(0,o.useEffect)((function(){g&&""!==t&&b.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(h?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]);if(h){ae(n),me(n);var t=n.reduce((function(e,n){return null!==n&&void 0!==n&&n.size?e+n.size:e}),0);Ie(t)}else ne(n[0]),me([]);u((0,F.vH)(!1))})).catch((function(e){console.error("Error loading object details",e),u((0,F.vH)(!1))}))}),[g,i,t,u,h,x]);var Re=[];ee&&ee.tags&&(Re=Object.keys(ee.tags));var ze=(0,P.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,P.jsx)(cn.Z,{})});if(!ee)return g?ze:null;var Me=Be.length>0?Be[Be.length-1]:ee.name,Ae=[i,De,[i,ee.name].join("/")],Ue=(0,y.F)(i,[N.Ft.S3_PUT_OBJECT_LEGAL_HOLD]),Ge=(0,y.F)(Ae,[N.Ft.S3_PUT_OBJECT_TAGGING]),Ke=(0,y.F)(Ae,[N.Ft.S3_GET_OBJECT_RETENTION,N.Ft.S3_PUT_OBJECT_RETENTION],!0),We=(0,y.F)(Ae,[N.Ft.ADMIN_INSPECT_DATA]),He=(0,y.F)(Ae,[N.Ft.S3_GET_BUCKET_VERSIONING,N.Ft.S3_PUT_BUCKET_VERSIONING,N.Ft.S3_GET_OBJECT_VERSION]),Ve=(0,y.F)(Ae,[N.Ft.S3_GET_OBJECT]),Je=(0,y.F)([i,De,[i,ee.name].join("/")],[N.Ft.S3_DELETE_OBJECT]),Ye=[{action:function(){!function(e){var n=(0,j.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random()));if(e.name.length>200&&(0,j.mv)().toLowerCase().includes("win"))Le(!0);else{var o=(0,ln.YO)(8),a=(0,B.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,o,(function(e){u((0,F.RO)({instanceID:n,progress:e}))}),(function(){u((0,F.oK)(n))}),(function(e){u((0,F.qJ)({instanceID:n,msg:e}))}),(function(){u((0,F.Im)(n))}));(0,ln.EN)(o,a),u((0,F.Mc)({ID:o,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}}(ee)},label:"Download",disabled:!!ee.is_delete_marker||!Ve,icon:(0,P.jsx)(E._8t,{}),tooltip:Ve?"Download this Object":(0,N.MK)([N.Ft.S3_GET_OBJECT],"download this object")},{action:function(){C(!0)},label:"Share",disabled:!!ee.is_delete_marker||!Ve,icon:(0,P.jsx)(E.aAc,{}),tooltip:Ve?"Share this File":(0,N.MK)([N.Ft.S3_GET_OBJECT],"share this object")},{action:function(){_e(!0)},label:"Preview",disabled:!!ee.is_delete_marker||"none"===(0,B.Bg)(De)||!Ve,icon:(0,P.jsx)(E.P99,{}),tooltip:Ve?"Preview this File":(0,N.MK)([N.Ft.S3_GET_OBJECT],"preview this object")},{action:function(){K(!0)},label:"Legal Hold",disabled:!r||!h||!!ee.is_delete_marker||!Ue||""!==x,icon:(0,P.jsx)(E.fNL,{}),tooltip:Ue?r?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,N.MK)([N.Ft.S3_PUT_OBJECT_LEGAL_HOLD],"change legal hold settings for this object")},{action:function(){L(!0)},label:"Retention",disabled:!h||!!ee.is_delete_marker||!Ke||""!==x||!r,icon:(0,P.jsx)(E.E9d,{}),tooltip:Ke?r?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,N.MK)([N.Ft.S3_GET_OBJECT_RETENTION,N.Ft.S3_PUT_OBJECT_RETENTION],"change Retention Rules for this object")},{action:function(){M(!0)},label:"Tags",disabled:!!ee.is_delete_marker||""!==x||!Ge,icon:(0,P.jsx)(E.DgT,{}),tooltip:Ge?"Change Tags for this File":(0,N.MK)([N.Ft.S3_PUT_OBJECT_TAGGING,N.Ft.S3_GET_OBJECT_TAGGING],"set Tags on this object")},{action:function(){X(!0)},label:"Inspect",disabled:!h||!!ee.is_delete_marker||""!==x||!We,icon:(0,P.jsx)(Y.Gp,{}),tooltip:We?"Inspect this file":(0,N.MK)([N.Ft.ADMIN_INSPECT_DATA],"inspect this file")},{action:function(){u((0,F.db)({status:!f,objectName:Me}))},label:f?"Hide Object Versions":"Display Object Versions",icon:(0,P.jsx)(E.cRd,{}),disabled:!h||!(ee.version_id&&"null"!==ee.version_id)||!He,tooltip:He?ee.version_id&&"null"!==ee.version_id?"Display Versions for this file":"":(0,N.MK)([N.Ft.S3_GET_BUCKET_VERSIONING,N.Ft.S3_PUT_BUCKET_VERSIONING,N.Ft.S3_GET_OBJECT_VERSION],"display all versions of this object")}];return(0,P.jsxs)(o.Fragment,{children:[w&&ee&&(0,P.jsx)(q.default,{open:w,closeModalAndRefresh:function(){le(null),C(!1)},bucketName:i,dataObject:ce||ee}),I&&ee&&(0,P.jsx)(pe,{open:I,closeModalAndRefresh:function(e){L(!1),e&&u((0,F.vH)(!0))},objectName:De,objectInfo:ee,bucketName:i}),ve&&(0,P.jsx)(ge,{deleteOpen:ve,selectedBucket:i,selectedObject:t,closeDeleteModalAndRefresh:function(e){be(!1),e&&""===x?c(!0):(u((0,F.Eq)(!0)),u((0,F.M3)("")),u((0,F.vH)(!0)))},versioning:h&&s,selectedVersion:x}),G&&ee&&(0,P.jsx)(je,{open:G,closeModalAndRefresh:function(e){K(!1),e&&u((0,F.vH)(!0))},objectName:ee.name,bucketName:i,actualInfo:ee}),Ce&&ee&&(0,P.jsx)(Ze.default,{open:Ce,bucketName:i,object:{name:ee.name,version_id:ee.version_id||"null",size:parseInt(ee.size||"0"),content_type:"",last_modified:new Date(ee.last_modified)},onClosePreview:function(){_e(!1)}}),z&&ee&&(0,P.jsx)(tn,{modalOpen:z,bucketName:i,actualInfo:ee,onCloseAndUpdate:function(e){M(!1),e&&u((0,F.vH)(!0))}}),V&&ee&&(0,P.jsx)(rn,{inspectOpen:V,volumeName:i,inspectPath:ee.name,closeInspectModalAndRefresh:function(e){X(!1),e&&u((0,F.vH)(!0))}}),Pe&&ee&&(0,P.jsx)(un,{open:Pe,closeModal:function(){Le(!1)},currentItem:De,bucketName:i,internalPaths:t,actualInfo:ee}),g?(0,P.jsx)(o.Fragment,{children:ze}):(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)(ke,{title:(0,P.jsxs)("div",{className:n.ObjectDetailsTitle,children:[$e(Me,!0),(0,P.jsx)("span",{className:n.objectNameContainer,children:Me})]}),items:Ye}),(0,P.jsx)(O.Z,{tooltip:Je?"":(0,N.MK)([N.Ft.S3_DELETE_OBJECT],"delete this object"),children:(0,P.jsx)(l.ZP,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,P.jsx)(y.s,{resource:[i,De,[i,ee.name].join("/")],scopes:[N.Ft.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,P.jsx)(p.z,{id:"delete-element-click",icon:(0,P.jsx)(E.pJl,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:function(){be(!0)},disabled:""===x&&ee.is_delete_marker,style:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete".concat(""!==x?" version":"")})})})}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.headerForSection,children:[(0,P.jsx)("span",{children:"Object Info"}),(0,P.jsx)(E.Gvh,{})]}),(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Name:"}),(0,P.jsx)("br",{}),(0,P.jsx)("div",{style:{overflowWrap:"break-word"},children:Me})]}),""!==x&&(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Version ID:"}),(0,P.jsx)("br",{}),x]}),(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Size:"}),(0,P.jsx)("br",{}),(0,j.ae)(ee.size||"0")]}),ee.version_id&&"null"!==ee.version_id&&""===x&&(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Versions:"}),(0,P.jsx)("br",{}),he.length," version",1!==he.length?"s":"",","," ",(0,j.l5)(Ne)]}),""===x&&(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Last Modified:"}),(0,P.jsx)("br",{}),function(e){var n=new Date,t=new Date(e),i=n.getTime()-t.getTime(),o=(0,j.nF)(i,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"}(ee.last_modified)]}),(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"ETAG:"}),(0,P.jsx)("br",{}),ee.etag||"N/A"]}),(0,P.jsxs)(J.Z,{className:n.detailContainer,children:[(0,P.jsx)("strong",{children:"Tags:"}),(0,P.jsx)("br",{}),0===Re.length?"N/A":Re.map((function(e,n){return(0,P.jsxs)("span",{children:[e,":",v()(ee,"tags.".concat(e),""),n div":{borderBottomColor:"#F8F8F8"}},"@media (max-width: 799px)":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:"#E2E2E2"}}}},versionContainer:{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10},"@media (max-width: 799px)":{fontSize:14,"& svg.min-icon":{display:"none"}}},buttonContainer:{textAlign:"right","& button":{marginLeft:"1.5rem"},"@media (max-width: 600px)":{"& button":{marginLeft:"5px"}}},versionID:{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},versionData:{marginRight:"10px",fontSize:12,color:"#868686","@media (max-width: 799px)":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"}},ctrItem:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:"#F8F8F8",left:"24px"},"@media (max-width: 799px)":{"&::before":{display:"none"}}},collapsableInfo:{"@media (max-width: 799px)":{display:"flex",flexDirection:"column"}},versionItem:{"@media (max-width: 799px)":{display:"none"}}})}))((function(e){var n=e.classes,t=e.fileName,i=e.versionInfo,o=e.isSelected,a=e.checkable,s=e.isChecked,r=e.onCheck,c=e.onShare,d=e.onDownload,u=e.onRestore,h=e.onPreview,m=e.globalClick,f=e.index,p=e.key,x=e.style,v=i.is_delete_marker,b=[{icon:(0,P.jsx)(E.P99,{}),action:h,tooltip:"Preview"},{icon:(0,P.jsx)(E._8t,{}),action:d,tooltip:"Download this version"},{icon:(0,P.jsx)(E.aAc,{}),action:c,tooltip:"Share this version"},{icon:(0,P.jsx)(E.D7Y,{}),action:u,tooltip:"Restore this version"}],g=null;return i.is_delete_marker?g="deleted":i.is_latest?g="current":"null"===i.version_id&&(g="null"),(0,P.jsx)(l.ZP,{container:!0,flex:1,className:n.ctrItem,onClick:function(){m(i)},style:x,children:(0,P.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(n.intermediateLayer," ").concat(o?"selected":""),children:(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.mainFileVersionItem," ").concat(i.is_delete_marker?"deleted":""),children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,justifyContent:"space-between",children:(0,P.jsxs)(l.ZP,{container:!0,children:[(0,P.jsxs)(l.ZP,{item:!0,xs:!0,md:4,className:n.versionContainer,children:[a&&(0,P.jsx)(Cn.Z,{checked:s,id:"select-".concat(i.version_id),label:"",name:"select-".concat(i.version_id),onChange:function(e){e.stopPropagation(),e.preventDefault(),r(i.version_id||"")},value:i.version_id||"",disabled:i.is_delete_marker,overrideCheckboxStyles:{paddingLeft:0,height:34,width:25},noTopMargin:!0}),$e(t,!0)," v",f.toString(),(0,P.jsx)("span",{className:n.versionItem,children:g&&(0,P.jsx)(wn,{type:g})})]}),(0,P.jsx)(l.ZP,{item:!0,xs:10,md:8,className:n.buttonContainer,children:b.map((function(e,t){return(0,P.jsx)(re.Z,{title:e.tooltip,children:(0,P.jsx)(T.Z,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"".concat(n.spacing," ").concat(v?n.buttonDisabled:""),disabled:v,onClick:function(n){n.stopPropagation(),v?n.preventDefault():e.action(i)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))}))})]})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.versionID,children:"null"!==i.version_id?i.version_id:"-"}),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.collapsableInfo,children:[(0,P.jsxs)("span",{className:n.versionData,children:[(0,P.jsx)("strong",{children:"Last modified:"})," ",(0,P.jsx)(pn(),{children:i.last_modified})]}),(0,P.jsxs)("span",{className:n.versionData,children:[(0,P.jsx)("strong",{children:"Size:"})," ",(0,j.ae)(i.size||"0")]})]})]})})},p)})),Tn=t(90673),En=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,a=e.selectedObject,s=(0,d.TL)(),r=(0,o.useState)(!1),c=(0,m.Z)(r,2),u=c[0],h=c[1],f=(0,o.useState)(""),p=(0,m.Z)(f,2),x=p[0],v=p[1];if((0,o.useEffect)((function(){u&&b.Z.invoke("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(a,"&non_current_versions=true")).then((function(){n(!0)})).catch((function(e){s((0,k.Ih)(e)),h(!1)}))}),[u,n,s,a,i]),!a)return null;return(0,P.jsx)(ve.Z,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:t,titleIcon:(0,P.jsx)(E.NvT,{}),isLoading:u,onConfirm:function(){h(!0)},onClose:function(){return n(!1)},confirmButtonProps:{disabled:"YES, PROCEED"!==x||u},confirmationContent:(0,P.jsxs)(xe.Z,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,P.jsx)("b",{children:(0,j.IO)(a)}),"? ",(0,P.jsx)("br",{}),(0,P.jsx)("br",{}),"To continue please type ",(0,P.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,P.jsx)(l.ZP,{item:!0,xs:12,children:(0,P.jsx)(Qe.Z,{id:"type-confirm",name:"retype-tenant",onChange:function(e){v(e.target.value)},label:"",value:x})})]})})},yn=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,a=e.selectedVersions,s=e.selectedObject,r=(0,d.TL)(),c=(0,o.useState)(!1),l=(0,m.Z)(c,2),u=l[0],h=l[1];return(0,o.useEffect)((function(){if(u){var e=a.map((function(e){return{path:s,versionID:e,recursive:!1}}));e.length>0&&b.Z.invoke("POST","/api/v1/buckets/".concat(i,"/delete-objects?all_versions=false"),e).then((function(){h(!1),n(!0)})).catch((function(e){r((0,k.Ih)(e)),h(!1)}))}}),[u,n,i,s,a,r]),a?(0,P.jsx)(ve.Z,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:t,titleIcon:(0,P.jsx)(E.NvT,{}),isLoading:u,onConfirm:function(){h(!0)},onClose:function(){return n(!1)},confirmationContent:(0,P.jsxs)(xe.Z,{children:["Are you sure you want to delete the selected ",a.length," ","versions for ",(0,P.jsx)("strong",{children:s}),"?"]})}):null},Nn=t(5171),In={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},kn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({versionsContainer:{padding:10,"@media (max-width: 799px)":{minHeight:800}},noBottomBorder:{borderBottom:0},versionsVirtualPanel:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto","@media (max-width: 799px)":{height:600}},screenTitleContainer:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",backgroundColor:"#F8F8F8",left:"24px",height:"40px",bottom:0},"@media (max-width: 799px)":{"&::before":{display:"none"}}},sortByLabel:{color:"#838383",fontWeight:"bold",whiteSpace:"nowrap",marginRight:12,fontSize:14,"@media (max-width: 600px)":{display:"none"}}},u.bp),u.Si),u.OR),u.VX),u.bK),u.VI),u.cx),u.C4),(0,u.Bz)(e.spacing(4))))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=(0,d.TL)(),r=(0,a.v9)((function(e){return e.objectBrowser.searchVersions})),c=(0,a.v9)((function(e){return e.objectBrowser.loadingVersions})),u=(0,a.v9)((function(e){return e.objectBrowser.selectedVersion})),f=(0,a.v9)(k.N5),x=(0,o.useState)(!1),g=(0,m.Z)(x,2),Z=g[0],S=g[1],w=(0,o.useState)(null),C=(0,m.Z)(w,2),_=C[0],T=C[1],y=(0,o.useState)(null),N=(0,m.Z)(y,2),I=N[0],L=N[1],z=(0,o.useState)([]),M=(0,m.Z)(z,2),A=M[0],U=M[1],G=(0,o.useState)(!1),K=(0,m.Z)(G,2),W=K[0],H=K[1],V=(0,o.useState)(""),J=(0,m.Z)(V,2),Y=J[0],X=J[1],$=(0,o.useState)("date"),Q=(0,m.Z)($,2),ee=Q[0],ne=Q[1],te=(0,o.useState)(!1),ie=(0,m.Z)(te,2),oe=ie[0],ae=ie[1],se=(0,o.useState)(!1),re=(0,m.Z)(se,2),ce=re[0],le=re[1],de=(0,o.useState)(!1),ue=(0,m.Z)(de,2),he=ue[0],me=ue[1],fe=(0,o.useState)([]),pe=(0,m.Z)(fe,2),xe=pe[0],ve=pe[1],be=(0,o.useState)(!1),ge=(0,m.Z)(be,2),je=ge[0],Se=ge[1],we=[];_&&(we=_.name.split("/")),(0,o.useEffect)((function(){c||_||s((0,F.Eq)(!0))}),[c,_,s]),(0,o.useEffect)((function(){c&&""!==t&&b.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(f?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]),i=(0,j.IO)(t),o=n.filter((function(e){return e.name===i}));f?(T(o.find((function(e){return e.is_latest}))||In),U(o)):(T(o[0]),U([])),s((0,F.Eq)(!1))})).catch((function(e){s((0,k.Ih)(e)),s((0,F.Eq)(!1))}))}),[c,i,t,s,f]);var Ce=function(e){L(e),S(!0)},_e=function(e){L(e),ae(!0)},Te=function(e){X(e.version_id||""),H(!0)},Ee=function(e){!function(e){var n=(0,j.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),o=(0,ln.YO)(8),a=(0,B.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,o,(function(e){s((0,F.RO)({instanceID:n,progress:e}))}),(function(){s((0,F.oK)(n))}),(function(e){s((0,F.qJ)({instanceID:n,msg:e}))}),(function(){s((0,F.Im)(n))}));(0,ln.EN)(o,a),s((0,F.Mc)({ID:o,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)},ye=function(e){s((0,F.M3)(e.version_id||""))},Ne=A.filter((function(e){return!!e.version_id&&e.version_id.includes(r)})),Ie=A.reduce((function(e,n){return n.size?e+parseInt(n.size):e}),0);Ne.sort((function(e,n){if("size"===ee)return e.size&&n.size?e.sizen.size?1:0:0;var t=new Date(e.last_modified).getTime(),i=new Date(n.last_modified).getTime();return ti?-1:0}));var ke=function(e){if(xe.includes(e)){var n=xe.filter((function(n){return n!==e}));ve(n)}else{var t=(0,h.Z)(xe);t.push(e),ve(t)}};return(0,P.jsxs)(o.Fragment,{children:[Z&&_&&(0,P.jsx)(q.default,{open:Z,closeModalAndRefresh:function(){L(null),S(!1),ae(!1)},bucketName:i,dataObject:I||_}),W&&_&&(0,P.jsx)(Sn,{restoreOpen:W,bucketName:i,versionID:Y,objectPath:_.name,onCloseAndUpdate:function(e){H(!1),X(""),e&&(s((0,F.Eq)(!0)),s((0,F.vH)(!0)))}}),oe&&_&&(0,P.jsx)(Ze.default,{open:oe,bucketName:i,object:{name:_.name,version_id:I&&I.version_id?I.version_id:"null",size:parseInt(I&&I.size?I.size:"0"),content_type:"",last_modified:new Date(_.last_modified)},onClosePreview:function(){ae(!1)}}),ce&&(0,P.jsx)(En,{deleteOpen:ce,closeDeleteModalAndRefresh:function(e){le(!1),e&&(s((0,F.Eq)(!0)),s((0,F.M3)("")),s((0,F.vH)(!0)))},selectedBucket:i,selectedObject:t}),je&&(0,P.jsx)(yn,{selectedBucket:i,selectedObject:(0,j.IO)(t),deleteOpen:je,selectedVersions:xe,closeDeleteModalAndRefresh:function(e){Se(!1),e&&(s((0,F.Eq)(!0)),s((0,F.M3)("")),s((0,F.vH)(!0)),ve([]))}}),(0,P.jsxs)(l.ZP,{container:!0,className:n.versionsContainer,children:[!_&&(0,P.jsx)(l.ZP,{item:!0,xs:12,children:(0,P.jsx)(jn.Z,{})}),_&&(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,children:(0,P.jsx)(D,{bucketName:i,internalPaths:(0,j.IO)(t),existingFiles:[],hidePathButton:!0})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,P.jsx)(R.Z,{icon:(0,P.jsx)("span",{className:n.listIcon,children:(0,P.jsx)(E.cRd,{})}),title:(0,P.jsxs)("span",{className:n.titleSpacer,children:[we.length>0?we[we.length-1]:_.name," ","Versions"]}),subTitle:(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,P.jsx)("span",{className:n.detailsSpacer,children:(0,P.jsxs)("strong",{children:[A.length," Version",1===A.length?"":"s","\xa0\xa0\xa0"]})}),(0,P.jsx)("span",{className:n.detailsSpacer,children:(0,P.jsx)("strong",{children:(0,j.l5)(Ie)})})]})}),actions:(0,P.jsxs)(o.Fragment,{children:[(0,P.jsx)(O.Z,{tooltip:"Select Multiple Versions",children:(0,P.jsx)(p.z,{id:"select-multiple-versions",onClick:function(){me(!he)},icon:(0,P.jsx)(E.amE,{}),variant:he?"callAction":"regular",style:{marginRight:8}})}),he&&(0,P.jsx)(O.Z,{tooltip:"Delete Selected Versions",children:(0,P.jsx)(p.z,{id:"delete-multiple-versions",onClick:function(){Se(!0)},icon:(0,P.jsx)(E.pJl,{}),variant:"secondary",style:{marginRight:8},disabled:0===xe.length})}),(0,P.jsx)(O.Z,{tooltip:"Delete Non Current Versions",children:(0,P.jsx)(p.z,{id:"delete-non-current",onClick:function(){le(!0)},icon:(0,P.jsx)(E.utM,{}),variant:"secondary",style:{marginRight:15},disabled:A.length<=1})}),(0,P.jsx)("span",{className:n.sortByLabel,children:"Sort by"}),(0,P.jsx)(Tn.Z,{id:"sort-by",label:"",value:ee,onChange:function(e){ne(e.target.value)},name:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}]})]}),className:n.noBottomBorder})}),(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.versionsVirtualPanel,children:_.version_id&&"null"!==_.version_id&&(0,P.jsx)(Nn.aV,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:Ne.length,rowHeight:108,rowRenderer:function(e){var n=e.key,t=e.index,i=(e.isScrolling,e.isVisible,e.style),o=A.length-t;return(0,P.jsx)(_n,{style:i,fileName:(null===_||void 0===_?void 0:_.name)||"",versionInfo:Ne[t],index:o,onDownload:Ee,onRestore:Te,onShare:Ce,onPreview:_e,globalClick:ye,isSelected:u===Ne[t].version_id,checkable:he,onCheck:ke,isChecked:xe.includes(Ne[t].version_id||"")},n)}})})]})]})]})})),Fn=t(9859),On=t(46078),Pn=o.lazy((function(){return Promise.resolve().then(t.bind(t,13065))})),Ln=o.lazy((function(){return Promise.resolve().then(t.bind(t,28789))})),Dn=o.lazy((function(){return Promise.resolve().then(t.bind(t,74768))})),Bn=(0,I.Z)(o.lazy((function(){return t.e(711).then(t.bind(t,50711))}))),Rn=(0,I.Z)(o.lazy((function(){return Promise.resolve().then(t.bind(t,34433))}))),zn=(0,I.Z)(o.lazy((function(){return Promise.all([t.e(3691),t.e(2515),t.e(6901)]).then(t.bind(t,26901))}))),Mn=(0,I.Z)(o.lazy((function(){return Promise.resolve().then(t.bind(t,78562))}))),An=(0,W.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({browsePaper:{border:0,height:"calc(100vh - 210px)","&.isEmbedded":{height:"calc(100vh - 315px)"},"&.actionsPanelOpen":{minHeight:"100%"},"@media (max-width: 800px)":{width:800}},"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}},badgeOverlap:{"& .MuiBadge-badge":{top:10,right:1,width:5,height:5,minWidth:5}},screenTitle:{borderBottom:0,paddingTop:0,paddingLeft:0,paddingRight:0}},u.VX),u.OR),u.qg),{},{searchField:(0,i.Z)((0,i.Z)({},u.qg.searchField),{},{maxWidth:380}),screenTitleContainer:{border:"#EAEDEE 1px solid",padding:"0.8rem 15px 0"},labelStyle:{color:"#969FA8",fontSize:"12px"},breadcrumbsContainer:{padding:"12px 14px 5px"},parentWrapper:{"@media (max-width: 800px)":{overflowX:"auto"}},fullContainer:{"@media (max-width: 799px)":{width:0}},hideListOnSmall:{"@media (max-width: 799px)":{display:"none"}}},u.C4),u.cx),(0,u.Bz)(e.spacing(4))))})),Un={borderWidth:2,borderRadius:2,borderColor:"#eeeeee",outline:"none"},Gn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#2196f3"},Kn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#00e676"};var Wn=(0,P.jsx)(Z.Z,{component:"h3",children:"Loading..."}),Hn=function(){var e,n=An(),t=(0,d.TL)(),r=(0,s.UO)(),c=(0,s.s0)(),u=(0,s.TH)(),x=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),w=(0,a.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),C=(0,a.v9)((function(e){return e.objectBrowser.rewind.bucketToRewind})),_=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),T=(0,a.v9)((function(e){return e.objectBrowser.searchObjects})),I=(0,a.v9)((function(e){return e.objectBrowser.showDeleted})),L=(0,a.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),M=(0,a.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),A=(0,a.v9)((function(e){return e.objectBrowser.loadingObjects})),U=(0,a.v9)((function(e){return e.objectBrowser.simplePath})),G=(0,a.v9)(Fn.HQ),W=(0,a.v9)(Fn.G6),H=(0,a.v9)((function(e){return e.console.session.allowResources})),J=(0,a.v9)(On.$4),Y=!(null===J||void 0===J||!J.includes("object-browser-only")),q=(0,o.useState)([]),X=(0,m.Z)(q,2),$=X[0],Q=X[1],ee=(0,o.useState)(!1),ne=(0,m.Z)(ee,2),te=ne[0],ie=ne[1],oe=(0,o.useState)(0),ae=(0,m.Z)(oe,2),se=ae[0],re=ae[1],ce=(0,o.useState)(Wn),le=(0,m.Z)(ce,2),de=le[0],ue=le[1],he=(0,o.useState)(!0),me=(0,m.Z)(he,2),fe=me[0],pe=me[1],xe=(0,o.useState)(!1),ve=(0,m.Z)(xe,2),be=ve[0],ge=ve[1],je=(0,o.useState)(!0),Ze=(0,m.Z)(je,2),Se=Ze[0],we=Ze[1],Ce=(0,o.useState)(!1),_e=(0,m.Z)(Ce,2),Te=_e[0],Ee=_e[1],ye=(0,o.useState)(!1),Ne=(0,m.Z)(ye,2),Ie=Ne[0],Fe=Ne[1],Oe=(0,o.useState)([]),Pe=(0,m.Z)(Oe,2),Le=Pe[0],De=Pe[1],Be=(0,o.useState)(!1),Re=(0,m.Z)(Be,2),ze=Re[0],Me=Re[1],Ae=(0,o.useState)(null),Ue=(0,m.Z)(Ae,2),Ge=Ue[0],Ke=Ue[1],We=(0,o.useState)(!1),He=(0,m.Z)(We,2),Ve=He[0],Je=He[1],Ye=(0,o.useState)("ASC"),qe=(0,m.Z)(Ye,2),Xe=qe[0],$e=qe[1],Qe=(0,o.useState)("name"),en=(0,m.Z)(Qe,2),nn=en[0],tn=en[1],on=(0,o.useState)(!1),an=(0,m.Z)(on,2),sn=an[0],rn=an[1],cn=(0,o.useState)(!1),dn=(0,m.Z)(cn,2),hn=dn[0],fn=dn[1],pn=(0,o.useState)(!1),xn=(0,m.Z)(pn,2),vn=xn[0],jn=xn[1],Zn=(0,o.useState)(null),Sn=(0,m.Z)(Zn,2),wn=Sn[0],_n=Sn[1],Tn=(0,o.useState)(null),En=(0,m.Z)(Tn,2),yn=En[0],Nn=En[1],In=u.pathname.split("/browse/"),Hn=2===In.length?In[1]:"",Vn=r.bucketName||"",Jn=(0,o.useRef)(null),Yn=(0,o.useRef)(null);(0,o.useEffect)((function(){null!==Yn.current&&(Yn.current.setAttribute("directory",""),Yn.current.setAttribute("webkitdirectory",""))}),[Yn]),(0,o.useEffect)((function(){if(1===Le.length){var e=Le[0];"none"!==(0,B.Bg)(e)?jn(!0):jn(!1),e.endsWith("/")?fn(!1):fn(!0)}else fn(!1),jn(!1)}),[Le]),(0,o.useEffect)((function(){wn||b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/quota")).then((function(e){var n=null;e.quota&&(n=e),_n(n)})).catch((function(e){console.error("Error Getting Quota Status: ",e.detailedError),_n(null)}))}),[wn,Vn]),(0,o.useEffect)((function(){Le.length>0?t((0,F.vb)(!0)):0===Le.length&&null===M&&t((0,F.vb)(!1))}),[Le,M,t]);var qn=(0,y.F)(Vn,[N.Ft.S3_DELETE_OBJECT]),Xn=(0,y.F)(Vn,[N.Ft.S3_LIST_BUCKET]);(0,o.useEffect)((function(){sn||(t((0,Fn.d5)(!0)),rn(!0))}),[sn,t,rn]),function(e,n){var t=(0,o.useRef)(null);(0,o.useEffect)((function(){t.current=e}),[e]),(0,o.useEffect)((function(){if(null!==n){var e=setInterval((function(){void 0!==t&&t.current&&t.current()}),n);return function(){return clearInterval(e)}}}),[n])}((function(){A&&function(){var e=Date.now()-se;e/1e3>=6?ue((0,P.jsx)(o.Fragment,{children:(0,P.jsxs)(Z.Z,{component:"h3",children:["This operation is taking longer than expected... (",Math.ceil(e/1e3),"s)"]})})):e/1e3>=3&&ue((0,P.jsx)(Z.Z,{component:"h3",children:"This operation is taking longer than expected..."}))}()}),1e3),(0,o.useEffect)((function(){fe&&(Xn?b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/versioning")).then((function(e){ge(e.is_versioned),pe(!1)})).catch((function(e){console.error("Error Getting Object Versioning Status: ",e.detailedError),pe(!1)})):(pe(!1),Q([])))}),[Vn,fe,t,Xn]),(0,o.useEffect)((function(){Se&&(Xn?b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/object-locking")).then((function(e){Ee(e.object_locking_enabled),we(!1)})).catch((function(e){console.error("Error Getting Object Locking Status: ",e.detailedError),we(!1)})):(Q([]),we(!1)))}),[Vn,Se,t,Xn]),(0,o.useEffect)((function(){var e=(0,j.IO)(Hn);e.endsWith("/")||""===e?(t((0,F.vb)(!1)),t((0,F.EE)(null)),t((0,F.Su)(""===e?"/":e))):(t((0,F.vH)(!0)),t((0,F.vb)(!0)),t((0,F.Eq)(!0)),t((0,F.EE)("".concat(e?"".concat((0,j.LL)(e)):""))),t((0,F.Su)("".concat(e.split("/").slice(0,-1).join("/"),"/"))))}),[Hn,w,x,t]),(0,o.useEffect)((function(){t((0,F.G4)("")),t((0,F.MU)(!0)),De([])}),[U,t,De]),(0,o.useEffect)((function(){if(A)if(Xn){var e="";if(Hn){var n=(0,j.IO)(Hn);e=n.endsWith("/")?n:n+"/"}var i=Date.now();re(i),ue(Wn);var o="/api/v1/buckets/".concat(Vn,"/objects");if(x){if(C!==Vn)return void t((0,F._w)());if(w){var a=w.toISOString();o="/api/v1/buckets/".concat(Vn,"/rewind/").concat(a)}}else if(I){var s=(new Date).toISOString();o="/api/v1/buckets/".concat(Vn,"/rewind/").concat(s)}b.Z.invoke("GET","".concat(o).concat(e?"?prefix=".concat((0,j.LL)(e)):"")).then((function(n){var i=n.objects||[],a=[],s=[];i.forEach((function(e){e.name!==(0,j.IO)(Hn)&&(e.name.endsWith("/")?a.push(e):s.push(e))}));var r=[].concat(a,s);if(0===r.length&&""!==e){var c="/api/v1/buckets/".concat(Vn,"/objects").concat(Hn?"?prefix=".concat(Hn):"");if(x){var l=w.toISOString(),d="";if(Hn){var u=(0,j.IO)(Hn);d=u.endsWith("/")?u:u+"/"}c="/api/v1/buckets/".concat(Vn,"/rewind/").concat(l).concat(d?"?prefix=".concat((0,j.LL)(d)):"")}b.Z.invoke("GET",c).then((function(n){if(n.objects){for(var i=!1,a=e.slice(0,e.length-1),s=0;s1,w="An error occurred while uploading the file".concat(S?"s":"","."),C={413:"Error - File size too large"};Z.withCredentials=!1,Z.onload=function(e){if(Z.status>=200&&Z.status<300)t((0,F.oK)(g)),s({status:Z.status}),(0,ln.GM)(p);else{if(C[Z.status])w=C[Z.status];else if(Z.response)try{var n=JSON.parse(Z.response);w=n.detailedMessage}catch(i){w="something went wrong"}t((0,F.qJ)({instanceID:g,msg:w})),r({status:Z.status,message:w}),(0,ln.GM)(p)}},Z.upload.addEventListener("error",(function(e){r(w),t((0,F.qJ)({instanceID:g,msg:"A network error occurred."}))})),Z.upload.addEventListener("progress",(function(e){var n=Math.floor(100*e.loaded/e.total);t((0,F.RO)({instanceID:g,progress:n}))})),Z.onerror=function(){r(w),t((0,F.qJ)({instanceID:g,msg:"A network error occurred."}))},Z.onloadend=function(){0===e.length&&t((0,F.MU)(!0))},Z.onabort=function(){t((0,F.Im)(g))};var _=new FormData;void 0!==a.size&&(_.append(a.size.toString(),d,l),(0,ln.EN)(p,Z),t((0,F.Mc)({ID:p,bucketName:n,done:!1,instanceID:g,percentage:0,prefix:"".concat((0,j.IO)(u)).concat(l),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,ln.N5)(p,_),(0,ln.EN)(p,Z))}))},s=[];t((0,F.LD)());for(var r=0;r0){var i=s.length,o=s.length-n.length,a={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(o,"/").concat(i)};t((0,k.Ih)(a))}t((0,F.MU)(!0)),De([])}))}(e,Vn,i,n)}),[Vn,t,U]),et=(0,o.useCallback)((function(e){if(e&&e.length>0&&pt){var n=e[0].path;Qn(e,n)}pt||t((0,k.Ih)({errorMessage:"Upload not allowed",detailedError:(0,N.MK)([N.Ft.S3_PUT_OBJECT],"upload objects to this location")}))}),[Qn]),nt=(0,f.uI)({noClick:!0,onDrop:et}),tt=nt.getRootProps,it=nt.getInputProps,ot=nt.isDragActive,at=nt.isDragAccept,st=(0,o.useMemo)((function(){return(0,i.Z)((0,i.Z)((0,i.Z)({},Un),ot?Gn:{}),at?Kn:{})}),[ot,at]),rt=$.filter((function(e){return""===T||e.name.toLowerCase().indexOf(T.toLowerCase())>=0})),ct=(0,j.IO)(Hn),lt=ct.split("/").filter((function(e){return""!==e})),dt=rt.sort((0,B.P_)(nn)),ut=[];ut="ASC"===Xe?dt:dt.reverse();var ht=[Vn];lt.length>0&&(ht=ht.concat(lt));var mt=(0,y.F)(Vn,[N.Ft.S3_GET_OBJECT]),ft=(0,y.F)(Vn,[N.Ft.S3_DELETE_OBJECT]),pt=(0,y.F)(ht,[N.Ft.S3_PUT_OBJECT]),xt=function(e){if(t((0,F.EE)(null)),t((0,F.db)({status:!1})),L&&null!==M){var n=(0,j.IO)(Hn).split("/");n.pop();var i="";n&&n.length>0&&(i="".concat(n.join("/"),"/")),c("/buckets/".concat(Vn,"/browse/").concat((0,j.LL)(i)))}t((0,F.vb)(!1)),De([]),e&&t((0,F.MU)(!0))},vt=[{type:"view",label:"View",onClick:function(e){De([]);var n="/buckets/".concat(Vn,"/browse").concat(e?"/".concat((0,j.LL)(e)):"");c(n),t((0,F.vb)(!0)),t((0,F.Eq)(!0)),t((0,F.EE)("".concat(e?"".concat((0,j.LL)(e)):"")))},sendOnlyId:!0}],bt=[{action:function(){if(0!==Le.length){var e=[];if(1===(e=rt.filter((function(e){return Le.includes(e.name)}))).length&&e[0].name.length>200&&(0,j.mv)().toLowerCase().includes("win"))return void Nn(e[0]);e.forEach((function(e){!function(e){var n=(0,j.LL)("".concat(Vn,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ln.YO)(8),o=(0,B.LR)(Vn,(0,j.LL)(e.name),e.version_id,e.size,null,i,(function(e){t((0,F.RO)({instanceID:n,progress:e}))}),(function(){t((0,F.oK)(n))}),(function(e){t((0,F.qJ)({instanceID:n,msg:e}))}),(function(){t((0,F.Im)(n))}));(0,ln.EN)(i,o),t((0,F.Mc)({ID:i,bucketName:Vn,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)}))}},label:"Download",disabled:!mt||0===Le.length,icon:(0,P.jsx)(E._8t,{}),tooltip:mt?"Download Selected":(0,N.MK)([N.Ft.S3_GET_OBJECT],"download objects from this bucket")},{action:function(){if(1===Le.length){var e;(e=rt.find((function(e){return Le.includes(e.name)})))&&(Ke(e),Je(!0))}},label:"Share",disabled:1!==Le.length||!hn,icon:(0,P.jsx)(E.aAc,{}),tooltip:hn?"Share Selected File":"Sharing unavailable"},{action:function(){if(1===Le.length){var e;(e=rt.find((function(e){return Le.includes(e.name)})))&&(Ke(e),Me(!0))}},label:"Preview",disabled:1!==Le.length||!vn,icon:(0,P.jsx)(E.P99,{}),tooltip:vn?"Preview Selected File":"Preview unavailable"},{action:function(){ie(!0)},label:"Delete",icon:(0,P.jsx)(Dn,{}),disabled:!ft||0===Le.length||!qn,tooltip:ft?"Delete Selected Files":(0,N.MK)([N.Ft.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,P.jsxs)(o.Fragment,{children:[Ve&&Ge&&(0,P.jsx)(Rn,{open:Ve,closeModalAndRefresh:function(){Je(!1),Ke(null)},bucketName:Vn,dataObject:{name:Ge.name,last_modified:"",version_id:Ge.version_id}}),te&&(0,P.jsx)(Bn,{deleteOpen:te,selectedBucket:Vn,selectedObjects:Le,closeDeleteModalAndRefresh:function(e){ie(!1),e&&(t((0,k.y1)("Objects deleted successfully.")),De([]),t((0,F.MU)(!0)))},versioning:be}),Ie&&(0,P.jsx)(zn,{open:Ie,closeModalAndRefresh:function(){Fe(!1)},bucketName:Vn}),ze&&(0,P.jsx)(Mn,{open:ze,bucketName:Vn,object:Ge,onClosePreview:function(){Me(!1),Ke(null)}}),!!yn&&(0,P.jsx)(un,{open:!!yn,closeModal:function(){Nn(null)},currentItem:(null===(e=yn.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:Vn,internalPaths:Hn,actualInfo:{name:yn.name,last_modified:"",version_id:yn.version_id,size:yn.size.toString()}}),(0,P.jsxs)(z.Z,{variant:"full",children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,P.jsx)(R.Z,{className:n.screenTitle,icon:(0,P.jsx)("span",{className:n.listIcon,children:(0,P.jsx)(E.wNb,{})}),title:(0,P.jsx)("span",{className:n.titleSpacer,children:Vn}),subTitle:(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,P.jsxs)("span",{className:n.detailsSpacer,children:["Created:\xa0\xa0\xa0",(0,P.jsx)("strong",{children:(null===W||void 0===W?void 0:W.creation_date)||""})]}),(0,P.jsxs)("span",{className:n.detailsSpacer,children:["Access:\xa0\xa0\xa0",(0,P.jsx)("strong",{children:(null===W||void 0===W?void 0:W.access)||""})]}),W&&(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)("span",{className:n.detailsSpacer,children:[W.size&&(0,P.jsx)(o.Fragment,{children:(0,j.l5)(W.size)}),W.size&&wn&&(0,P.jsxs)(o.Fragment,{children:[" / ",(0,j.l5)(wn.quota)]}),W.size&&W.objects?" - ":"",W.objects&&(0,P.jsxs)(o.Fragment,{children:[W.objects,"\xa0Object",W.objects&&1!==W.objects?"s":""]})]})})]})}),actions:(0,P.jsx)(o.Fragment,{children:(0,P.jsxs)("div",{className:n.actionsSection,children:[(0,P.jsx)(O.Z,{tooltip:"Rewind Bucket",children:(0,P.jsx)(p.z,{id:"rewind-objects-list",label:"Rewind",icon:(0,P.jsx)(S.Z,{badgeContent:" ",color:"secondary",variant:"dot",invisible:!x,className:n.badgeOverlap,sx:{height:16},children:(0,P.jsx)(Pn,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:function(){Fe(!0)},disabled:!be||!(0,y.F)(Vn,[N.Ft.S3_GET_OBJECT])})}),(0,P.jsx)(O.Z,{tooltip:"Reload List",children:(0,P.jsx)(p.z,{id:"refresh-objects-list",label:"Refresh",icon:(0,P.jsx)(Ln,{}),variant:"regular",onClick:function(){t(_?(0,F.Eq)(!0):(0,F.MU)(!0))},disabled:!(0,y.F)(Vn,[N.Ft.S3_LIST_BUCKET])||x})}),(0,P.jsx)("input",{type:"file",multiple:!0,onChange:$n,style:{display:"none"},ref:Jn}),(0,P.jsx)("input",{type:"file",multiple:!0,onChange:$n,style:{display:"none"},ref:Yn}),(0,P.jsx)(K,{bucketName:Vn,uploadPath:ht.join("/"),uploadFileFunction:function(e){Jn&&Jn.current&&Jn.current.click(),e()},uploadFolderFunction:function(e){Yn&&Yn.current&&Yn.current.click(),e()}})]})})})}),(0,P.jsxs)("div",(0,i.Z)((0,i.Z)({id:"object-list-wrapper"},tt({style:(0,i.Z)({},st)})),{},{children:[(0,P.jsx)("input",(0,i.Z)({},it())),(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.tableBlock,sx:{border:"#EAEDEE 1px solid",borderTop:0},children:[_?(0,P.jsx)(o.Fragment,{children:null!==M&&(0,P.jsx)(kn,{internalPaths:M,bucketName:Vn})}):(0,P.jsx)(y.s,{scopes:[N.Ft.S3_LIST_BUCKET],resource:Vn,errorProps:{disabled:!0},children:(0,P.jsxs)(l.ZP,{item:!0,xs:12,className:n.fullContainer,children:[(0,P.jsx)(l.ZP,{item:!0,xs:12,className:n.breadcrumbsContainer,children:(0,P.jsx)(D,{bucketName:Vn,internalPaths:ct,existingFiles:$||[],additionalOptions:!be||x?null:(0,P.jsx)("div",{children:(0,P.jsx)(Cn.Z,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:function(){t((0,F.mz)(!I)),xt(!0)},checked:I,overrideLabelClasses:n.labelStyle,className:n.overrideShowDeleted,noTopMargin:!0})}),hidePathButton:!1})}),(0,P.jsx)(g.Z,{itemActions:vt,columns:x?gn:bn,isLoading:A,loadingMessage:de,entityName:"Objects",idField:"name",records:ut,customPaperHeight:"".concat(n.browsePaper," ").concat(Y?"isEmbedded":""," ").concat(L?"actionsPanelOpen":""),selectedItems:Le,onSelect:function(e){var n=e.target,i=n.value,o=n.checked,a=(0,h.Z)(Le);return o?a.push(i):a=a.filter((function(e){return e!==i})),De(a),t((0,F.EE)(null)),a},customEmptyMessage:"This location is empty".concat(x?"":", please try uploading a new file"),sortConfig:{currentSort:nn,currentDirection:Xe,triggerSort:function(e){var n=v()(e,"sortDirection","DESC");tn(e.sortBy),$e(n),t((0,F.MU)(!0))}},onSelectAll:function(){if(t((0,F.EE)(null)),Le.length!==ut.length){var e=ut.map((function(e){return e.name}));De(e)}else De([])},rowStyle:function(e){var n,t=e.index;return null!==(n=ut[t])&&void 0!==n&&n.delete_flag?"deleted":""},parentClassName:n.parentWrapper})]})}),(0,P.jsx)(y.s,{scopes:[N.Ft.S3_LIST_BUCKET],resource:Vn,errorProps:{disabled:!0},children:(0,P.jsxs)(V,{open:L,closePanel:function(){xt(!1)},className:"".concat(_?n.hideListOnSmall:""),children:[Le.length>0&&(0,P.jsx)(ke,{items:bt,title:"Selected Objects:"}),null!==M&&(0,P.jsx)(mn,{internalPaths:M,bucketName:Vn,onClosePanel:xt,versioning:be,locking:Te})]})})]})]}))]})]})},Vn=t(32291),Jn=t(95792),Yn=t(84669),qn=t(59114),Xn=t(73996),$n=t(49535),Qn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)({},(0,u.Bz)(e.spacing(4))))}))((function(){var e=(0,d.TL)(),n=(0,s.s0)(),t=(0,s.UO)(),i=(0,s.TH)(),r=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),c=(0,a.v9)((function(e){return e.objectBrowser.searchObjects})),u=(0,a.v9)((function(e){return e.objectBrowser.versionedFile})),h=(0,a.v9)((function(e){return e.objectBrowser.searchVersions})),m=(0,a.v9)(On.$4),f=t.bucketName||"",x=i.pathname.split("/browse/"),v=2===x.length?x[1]:"",b=!(null===m||void 0===m||!m.includes("object-browser-only"));(0,o.useEffect)((function(){e((0,F.db)({status:!1}))}),[v,e]);var g=(0,$n.Z)(f,[N.Ft.S3_GET_BUCKET_POLICY,N.Ft.S3_PUT_BUCKET_POLICY,N.Ft.S3_GET_BUCKET_VERSIONING,N.Ft.S3_PUT_BUCKET_VERSIONING,N.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,N.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,N.Ft.S3_DELETE_BUCKET,N.Ft.S3_GET_BUCKET_NOTIFICATIONS,N.Ft.S3_PUT_BUCKET_NOTIFICATIONS,N.Ft.S3_GET_REPLICATION_CONFIGURATION,N.Ft.S3_PUT_REPLICATION_CONFIGURATION,N.Ft.S3_GET_LIFECYCLE_CONFIGURATION,N.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,N.Ft.ADMIN_GET_BUCKET_QUOTA,N.Ft.ADMIN_SET_BUCKET_QUOTA,N.Ft.S3_PUT_BUCKET_TAGGING,N.Ft.S3_GET_BUCKET_TAGGING,N.Ft.S3_LIST_BUCKET_VERSIONS,N.Ft.S3_GET_BUCKET_POLICY_STATUS,N.Ft.S3_DELETE_BUCKET_POLICY]),j=(0,P.jsx)(o.Fragment,{children:r?(0,P.jsx)(o.Fragment,{children:(0,P.jsx)(qn.Z,{placeholder:"Start typing to filter versions of ".concat(u),onChange:function(n){e((0,F.Pr)(n))},value:h})}):(0,P.jsx)(y.s,{scopes:[N.Ft.S3_LIST_BUCKET],resource:f,errorProps:{disabled:!0},children:(0,P.jsx)(qn.Z,{placeholder:"Start typing to filter objects in the bucket",onChange:function(n){e((0,F.G4)(n))},value:c})})});return(0,P.jsxs)(o.Fragment,{children:[b?(0,P.jsxs)(l.ZP,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,P.jsx)(l.ZP,{children:(0,P.jsx)(Xn.Z,{marginRight:30,marginTop:10})}),(0,P.jsx)(l.ZP,{item:!0,xs:!0,children:j})]}):(0,P.jsx)(Vn.Z,{label:(0,P.jsx)(Yn.Z,{label:"Buckets",to:N.gA.BUCKETS}),actions:(0,P.jsx)(y.s,{scopes:N.D[N.EI.BUCKET_ADMIN],resource:f,errorProps:{disabled:!0},children:(0,P.jsx)(O.Z,{tooltip:g?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+N.EI.BUCKET_ADMIN+" permisions.",children:(0,P.jsx)(p.z,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:function(){n("/buckets/".concat(f,"/admin"))},icon:(0,P.jsx)(Jn.Z,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),middleComponent:j}),(0,P.jsx)(l.ZP,{children:(0,P.jsx)(Hn,{})})]})}))},34433:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var i=t(29439),o=t(1413),a=t(72791),s=t(26181),r=t.n(s),c=t(60364),l=t(75952),d=t(11135),u=t(25787),h=t(78029),m=t.n(h),f=t(61889),p=t(40986),x=t(23814),v=t(81207),b=t(56028),g=t(64163),j=t(30829),Z=t(72426),S=t.n(Z),w=t(21435),C=t(38734),_=t(80184),T=(0,u.Z)((function(e){return(0,d.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{labelContainer:{display:"flex",alignItems:"center",marginBottom:15},fieldContainer:(0,o.Z)((0,o.Z)({},x.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),dateInputContainer:{margin:"0 10px"},durationInputs:{display:"flex",alignItems:"center",justifyContent:"flex-start"},validityIndicator:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10},invalidDurationText:{marginTop:15,display:"flex",color:"red",fontSize:11},reverseInput:{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}},validityText:{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},validTill:{fontWeight:"bold",marginLeft:15}}))}))((function(e){var n=e.classes,t=e.id,o=e.initialDate,s=e.label,r=e.maxDays,c=e.entity,l=e.onChange,d=(0,a.useState)(7),u=(0,i.Z)(d,2),h=u[0],m=u[1],p=(0,a.useState)(0),x=(0,i.Z)(p,2),v=x[0],b=x[1],g=(0,a.useState)(0),Z=(0,i.Z)(g,2),T=Z[0],E=Z[1],y=(0,a.useState)(!0),N=(0,i.Z)(y,2),I=N[0],k=N[1],F=(0,a.useState)(S()()),O=(0,i.Z)(F,2),P=O[0],L=O[1];(0,a.useEffect)((function(){L(function(e,n,t,i){return S()(e).add(n,"days").add(t,"hours").add(i,"minutes")}(o,h,v,T))}),[o,h,v,T]),(0,a.useEffect)((function(){I?l(P.format("YYYY-MM-DDTHH:mm:ss"),!0):l("0000-00-00",!1)}),[P,l,I]),(0,a.useEffect)((function(){var e=!0;(h<0||r&&h>r||isNaN(h))&&(e=!1),(v<0||v>23||isNaN(v))&&(e=!1),(T<0||T>59||isNaN(T))&&(e=!1),!r||h!==r||0===v&&0===T||(e=!1),k(e)}),[P,r,l,h,v,T]);var D={style:{textAlign:"center",paddingRight:10,paddingLeft:10,width:25},className:"removeArrows"};return(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)(f.ZP,{container:!0,className:n.fieldContainer,children:[(0,_.jsx)(f.ZP,{item:!0,xs:12,className:n.labelContainer,children:(0,_.jsx)(j.Z,{htmlFor:t,className:n.inputLabel,sx:{marginLeft:"10px"},children:(0,_.jsx)("span",{children:s})})}),(0,_.jsxs)(f.ZP,{item:!0,xs:12,className:n.durationInputs,children:[(0,_.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,_.jsx)(w.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:r?r.toString():"999",label:"Days",name:t,onChange:function(e){m(parseInt(e.target.value))},value:h.toString(),extraInputProps:D,noLabelMinWidth:!0})}),(0,_.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,_.jsx)(w.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:function(e){b(parseInt(e.target.value))},value:v.toString(),extraInputProps:D,noLabelMinWidth:!0})}),(0,_.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,_.jsx)(w.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:function(e){E(parseInt(e.target.value))},value:T.toString(),extraInputProps:D,noLabelMinWidth:!0})})]}),(0,_.jsx)(f.ZP,{item:!0,xs:12,className:"".concat(n.validityIndicator," ").concat(n.formFieldRow),children:I?(0,_.jsxs)("div",{className:n.validityText,children:[(0,_.jsx)(C.xPt,{}),(0,_.jsxs)("div",{className:n.validityLabel,children:[c," will be available until:"]})," ",(0,_.jsx)("div",{className:n.validTill,children:P.format("MM/DD/YYYY HH:mm:ss")})]}):(0,_.jsx)("div",{className:n.invalidDurationText,children:"Please select a valid duration."})})]})})})),E=t(45248),y=t(87995),N=t(25469),I=a.lazy((function(){return Promise.resolve().then(t.bind(t,79880))})),k=(0,u.Z)((function(e){return(0,d.Z)((0,o.Z)((0,o.Z)({shareLinkInfo:{fontSize:14,fontWeight:400},copyShareLink:{display:"flex","@media (max-width: 900px)":{flexFlow:"column",alignItems:"center",justifyContent:"center"}},copyShareLinkInput:{"& div:first-child":{marginTop:0},"@media (max-width: 900px)":{minWidth:250}},copyShareLinkBtn:{display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{marginTop:10}}},x.ID),x.DF))}))((function(e){var n=e.classes,t=e.open,o=e.closeModalAndRefresh,s=e.bucketName,d=e.dataObject,u=(0,N.TL)(),h=(0,c.v9)(y.N5),x=(0,a.useState)(""),j=(0,i.Z)(x,2),Z=j[0],S=j[1],w=(0,a.useState)(!0),k=(0,i.Z)(w,2),F=k[0],O=k[1],P=(0,a.useState)(!1),L=(0,i.Z)(P,2),D=L[0],B=L[1],R=(0,a.useState)(""),z=(0,i.Z)(R,2),M=z[0],A=z[1],U=(0,a.useState)(!0),G=(0,i.Z)(U,2),K=G[0],W=G[1],H=(0,a.useState)("null"),V=(0,i.Z)(H,2),J=V[0],Y=V[1],q=new Date;return(0,a.useEffect)((function(){if(void 0===d.version_id)return h?(v.Z.invoke("GET","/api/v1/buckets/".concat(s,"/objects?prefix=").concat((0,E.LL)(d.name)).concat(h?"&with_versions=true":"")).then((function(e){var n=r()(e,"objects",[]).find((function(e){return e.is_latest}));Y(n?n.version_id:"null")})).catch((function(e){u((0,y.zb)(e))})),void O(!1)):(Y("null"),void O(!1));Y(d.version_id||"null"),O(!1)}),[s,d,h,u]),(0,a.useEffect)((function(){if(K&&!F){B(!0),S("");var e=new Date("".concat(M)),n=new Date,t=Math.ceil((e.getTime()-n.getTime())/1e3);t>0&&v.Z.invoke("GET","/api/v1/buckets/".concat(s,"/objects/share?prefix=").concat((0,E.LL)(d.name),"&version_id=").concat(J).concat(""!==M?"&expires=".concat(t,"s"):"")).then((function(e){S(e),B(!1)})).catch((function(e){u((0,y.zb)(e)),S(""),B(!1)}))}}),[d,M,s,K,S,u,h,F,J]),(0,_.jsx)(a.Fragment,{children:(0,_.jsxs)(b.Z,{title:"Share File",titleIcon:(0,_.jsx)(C.aAc,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:function(){o()},children:[F&&(0,_.jsx)(f.ZP,{item:!0,xs:12,children:(0,_.jsx)(p.Z,{})}),!F&&(0,_.jsxs)(a.Fragment,{children:[(0,_.jsxs)(f.ZP,{item:!0,xs:12,className:n.shareLinkInfo,children:["This is a temporary URL with integrated access credentials for sharing objects valid for up to 7 days.",(0,_.jsx)("br",{}),(0,_.jsx)("br",{}),"The temporary URL expires after the configured time limit."]}),(0,_.jsx)("br",{}),(0,_.jsx)(f.ZP,{item:!0,xs:12,className:n.dateContainer,children:(0,_.jsx)(T,{initialDate:q,id:"date",label:"Active for",maxDays:7,onChange:function(e,n){W(n),n?A(e):(A(""),S(""))},entity:"Link"})}),(0,_.jsx)(f.ZP,{item:!0,xs:12,className:"".concat(n.copyShareLink," ").concat(n.formFieldRow," "),children:(0,_.jsx)(f.ZP,{item:!0,xs:12,className:n.copyShareLinkInput,children:(0,_.jsx)(g.Z,{content:Z,actionButton:(0,_.jsx)(m(),{text:Z,children:(0,_.jsx)(l.z,{id:"copy-path",variant:"regular",onClick:function(){u((0,y.MK)("Share URL Copied to clipboard"))},disabled:""===Z||D,style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,_.jsx)(I,{})})})})})})]})]})})}))},78562:function(e,n,t){t.r(n),t.d(n,{default:function(){return v}});var i=t(72791),o=t(56028),a=t(4942),s=t(29439),r=t(11135),c=t(25787),l=t(61889),d=t(40986),u=t(47922),h=t(45248),m=t(28182),f=t(80184),p=(0,c.Z)((function(){return(0,r.Z)({iframeContainer:{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.text":{height:700},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},iframeBase:{backgroundColor:"#fff"},iframeHidden:{display:"none"}})}))((function(e){var n=e.bucketName,t=e.object,o=e.isFullscreen,r=void 0!==o&&o,c=e.classes,p=(0,i.useState)(!0),x=(0,s.Z)(p,2),v=x[0],b=x[1],g="";if(t){var j=(0,h.LL)(t.name),Z=document.baseURI.replace(window.location.origin,"");g="".concat(window.location.origin).concat(Z,"api/v1/buckets/").concat(n,"/objects/download?preview=true&prefix=").concat(j),t.version_id&&(g=g.concat("&version_id=".concat(t.version_id)))}var S=(0,u.Bg)((null===t||void 0===t?void 0:t.name)||""),w=function(){b(!1)};return(0,f.jsxs)(i.Fragment,{children:[v&&(0,f.jsx)(l.ZP,{item:!0,xs:12,children:(0,f.jsx)(d.Z,{})}),(0,f.jsxs)("div",{style:{textAlign:"center"},children:["video"===S&&(0,f.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:w,children:(0,f.jsx)("source",{src:g,type:"video/mp4"})}),"audio"===S&&(0,f.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:w,children:(0,f.jsx)("source",{src:g,type:"audio/mpeg"})}),"image"===S&&(0,f.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:g,alt:"preview",onLoad:w}),"video"!==S&&"audio"!==S&&"image"!==S&&(0,f.jsx)("div",{className:(0,m.Z)(c.iframeBase,(0,a.Z)({},c.iframeHidden,v)),children:(0,f.jsx)("iframe",{src:g,title:"File Preview",allowTransparency:!0,className:"".concat(c.iframeContainer," ").concat(r?"fullHeight":S),onLoad:w,children:"File couldn't be loaded. Please try Download instead"})})]})]})})),x=t(38734),v=function(e){var n=e.open,t=e.bucketName,a=e.object,s=e.onClosePreview;return(0,f.jsx)(i.Fragment,{children:(0,f.jsx)(o.Z,{modalOpen:n,title:"Preview - ".concat(null===a||void 0===a?void 0:a.name),onClose:s,wideLimit:!1,titleIcon:(0,f.jsx)(x.$30,{}),children:(0,f.jsx)(p,{bucketName:t,object:a})})})}},47922:function(e,n,t){t.d(n,{Bg:function(){return s},LR:function(){return a},P_:function(){return r},kh:function(){return c}});var i=t(45248),o=t(76610),a=function(e,n,t,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,r=arguments.length>5?arguments[5]:void 0,c=arguments.length>6?arguments[6]:void 0,l=arguments.length>7?arguments[7]:void 0,d=arguments.length>8?arguments[8]:void 0,u=arguments.length>9?arguments[9]:void 0,h=document.createElement("a");document.body.appendChild(h);var m=document.baseURI.replace(window.location.origin,""),f="".concat(window.location.origin).concat(m,"api/v1/buckets/").concat(e,"/objects/download?prefix=").concat(n).concat(null!==s&&""!==s.trim()?"&override_file_name=".concat((0,i.LL)(s||"")):"");t&&(f=f.concat("&version_id=".concat(t)));var p=new XMLHttpRequest;return p.open("GET",f,!0),p.addEventListener("progress",(function(e){var n=Math.round(e.loaded/a*100);c&&c(n)}),!1),p.responseType="blob",p.onreadystatechange=function(){if(4===p.readyState)if(200===p.status){var e=p.getResponseHeader("Content-Disposition"),n="download";if(e)n=decodeURIComponent(e).split('"')[1];l&&l(),(0,o.GM)(r);var t=document.createElement("a");t.href=window.URL.createObjectURL(p.response),t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}else{if("application/json"===p.getResponseHeader("Content-Type")){var i=JSON.parse(p.response);if(i.detailedMessage)return void d(i.detailedMessage)}d("Unexpected response status code (".concat(p.status,")."))}},p.onerror=function(){d&&d("A network error occurred.")},p.onabort=function(){u&&u()},p},s=function(e){var n=e.split(".").pop();return n?(n=n.toLowerCase(),["jif","jfif","apng","avif","svg","webp","bmp","ico","jpg","jpe","jpeg","gif","png","heic"].includes(n)?"image":["pdf","txt","json"].includes(n)?"text":["wav","mp3","alac","aiff","dsd","pcm"].includes(n)?"audio":["mp4","avi","mpg","webm","mov","flv","mkv","wmv","avchd","mpeg-4"].includes(n)?"video":"none"):"none"},r=function(e){switch(e){case"name":return function(e,n){return e.name.localeCompare(n.name)};case"last_modified":return function(e,n){return new Date(e.last_modified).getTime()-new Date(n.last_modified).getTime()};case"size":return function(e,n){return(e.size||-1)-(n.size||-1)}}},c=function(e,n,t){if(0===t.length)return null;var i=t.filter((function(n){return n.resource.endsWith(":".concat(e))||n.resource.includes(":".concat(e,"/"))}));if(0===i.length)return null;var o=[],a=n.split("/");return i.forEach((function(e){var n=(e.resource.split(":").pop()||"").split("/");n.length>1&&n.every((function(e,n){return"*"!==e&&((!a[n]||a[n]===e)&&(a[n]||o.push({name:"".concat(e,"/"),size:0,last_modified:new Date,version_id:""}),!0))})),"StringEquals"!==e.conditionOperator&&"StringLike"!==e.conditionOperator||e.prefixes.forEach((function(e){if(""!==e){var n=e.split("/"),t=[];n.every((function(e,n){return!e.includes("*")&&""!==e&&(e!==a[n]?(o.push({name:"".concat(t.join("/")).concat(t.length>0?"/":"").concat(e,"/"),size:0,last_modified:new Date,version_id:""}),!1):(""!==e&&t.push(e),!0))}))}}))})),o}},73996:function(e,n,t){t(72791);var i=t(38734),o=t(60364),a=t(80184);n.Z=function(e){var n=e.marginRight,s=e.marginTop,r=t(47045),c=(0,o.v9)((function(e){return e.system.overrideStyles})),l=r((null===c||void 0===c?void 0:c.backgroundColor)||"#fff").getBrightness()<=128;return(0,a.jsx)(i.BHR,{style:{width:105,marginRight:n,marginTop:s,fill:l?"#fff":"#081C42"}})}},75578:function(e,n,t){var i=t(1413),o=t(72791),a=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function t(t){return(0,a.jsx)(o.Suspense,{fallback:n,children:(0,a.jsx)(e,(0,i.Z)({},t))})}return t}},64163:function(e,n,t){var i=t(1413),o=t(72791),a=t(61889),s=t(11135),r=t(25787),c=t(23814),l=t(80184);n.Z=(0,r.Z)((function(e){return(0,s.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,s=e.content,r=e.multiLine,c=void 0!==r&&r,d=e.actionButton;return(0,l.jsx)(o.Fragment,{children:(0,l.jsxs)(a.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(a.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(a.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(a.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:s}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},56028:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),s=t(60364),r=t(13400),c=t(55646),l=t(5574),d=t(65661),u=t(39157),h=t(11135),m=t(25787),f=t(23814),p=t(25469),x=t(29823),v=t(28057),b=t(87995),g=t(80184);n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,o.Z)((0,o.Z)({},f.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,h=e.title,m=e.children,f=e.classes,j=e.wideLimit,Z=void 0===j||j,S=e.noContentPadding,w=e.titleIcon,C=void 0===w?null:w,_=(0,p.TL)(),T=(0,a.useState)(!1),E=(0,i.Z)(T,2),y=E[0],N=E[1],I=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,a.useEffect)((function(){_((0,b.MK)(""))}),[_]),(0,a.useEffect)((function(){if(I){if(""===I.message)return void N(!1);"error"!==I.type&&N(!0)}}),[I]);var k=Z?{classes:{paper:f.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return I&&(F=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(F=I.message)),(0,g.jsxs)(l.Z,(0,o.Z)((0,o.Z)({open:t,classes:f},k),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:f.root,children:[(0,g.jsxs)(d.Z,{className:f.title,children:[(0,g.jsxs)("div",{className:f.titleText,children:[C," ",h]}),(0,g.jsx)("div",{className:f.closeContainer,children:(0,g.jsx)(r.Z,{"aria-label":"close",id:"close",className:f.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,g.jsx)(x.Z,{})})})]}),(0,g.jsx)(v.Z,{isModal:!0}),(0,g.jsx)(c.Z,{open:y,className:f.snackBarModal,onClose:function(){N(!1),_((0,b.MK)(""))},message:F,ContentProps:{className:"".concat(f.snackBar," ").concat(I&&"error"===I.type?f.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,g.jsx)(u.Z,{className:S?"":f.content,children:m})]}))}))},59114:function(e,n,t){var i=t(4942),o=t(1413),a=(t(72791),t(63466)),s=t(74900),r=t(27391),c=t(25787),l=t(11135),d=t(23814),u=t(80184);n.Z=(0,c.Z)((function(e){return(0,l.Z)({searchField:(0,o.Z)({},d.qg.searchField),adornment:{}})}))((function(e){var n=e.placeholder,t=void 0===n?"":n,o=e.classes,c=e.onChange,l=e.adornmentPosition,d=void 0===l?"end":l,h=e.overrideClass,m=e.value,f=(0,i.Z)({disableUnderline:!0},"".concat(d,"Adornment"),(0,u.jsx)(a.Z,{position:d,className:o.adornment,children:(0,u.jsx)(s.Z,{})}));return(0,u.jsx)(r.Z,{placeholder:t,className:h||o.searchField,id:"search-resource",label:"",InputProps:f,onChange:function(e){c(e.target.value)},variant:"standard",value:m})}))},27454:function(e,n,t){var i=t(1413),o=t(72791),a=t(20068),s=t(80184);n.Z=function(e){var n=e.tooltip,t=e.children,r=e.errorProps,c=void 0===r?null:r;return(0,s.jsx)(a.Z,{title:n,children:(0,s.jsx)("span",{children:c?(0,o.cloneElement)(t,(0,i.Z)({},c)):t})})}},73669:function(e,n,t){var i=t(29439),o=t(72791),a=t(64554),s=t(75952),r=t(21435),c=t(38734),l=t(80184);n.Z=function(e){var n=e.value,t=(0,o.useState)(!1),d=(0,i.Z)(t,2),u=d[0],h=d[1];return(0,l.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,l.jsx)(r.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:u?"text":"password",onChange:function(){},value:n,overlayIcon:(0,l.jsx)(c.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(n)}}),(0,l.jsx)(s.z,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return h(!u)},label:"Show/Hide"})]})}}}]); +//# sourceMappingURL=1379.35c4721c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1379.35c4721c.chunk.js.map b/portal-ui/build/static/js/1379.35c4721c.chunk.js.map new file mode 100644 index 000000000..01d48d5c8 --- /dev/null +++ b/portal-ui/build/static/js/1379.35c4721c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/1379.35c4721c.chunk.js","mappings":"0fAyCMA,GAAkBC,EAAAA,EAAAA,GACtBC,EAAAA,MACE,kBAAM,+BAAN,KAwNJ,GAAeC,EAAAA,EAAAA,IApNA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,kBACRC,EAAAA,IADO,IAEVC,kBAAmB,CACjBC,OAAQ,WAJC,GAoNf,EAnM2B,SAAC,GAOL,IANrBC,EAMoB,EANpBA,QACAC,EAKoB,EALpBA,WACAC,EAIoB,EAJpBA,cACAC,EAGoB,EAHpBA,cACAC,EAEoB,EAFpBA,eACAC,EACoB,EADpBA,kBAEMC,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAEXC,GAAgBC,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAcC,OAAOJ,aAAhD,IAEIK,GAAeJ,EAAAA,EAAAA,KACnB,SAACC,GAAD,OAAqBA,EAAMC,cAAcE,YAAzC,IAEIC,GAAgBL,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAcG,aAAzC,IAGF,GAAgDC,EAAAA,EAAAA,WAAkB,GAAlE,eAAOC,EAAP,KAAyBC,EAAzB,KAEMC,GAAgBC,EAAAA,EAAAA,GAAcpB,EAAY,CAACqB,EAAAA,GAAAA,gBAE7CC,EAAQrB,EAEU,KAAlBA,IACFqB,EAAK,WAAOrB,IAGd,IAAMsB,EAAaD,EAAME,MAAM,KAAKC,QAAO,SAACC,GAAD,MAAmB,KAATA,CAAV,IACrCC,EAAuBJ,EAAWK,OAAS,EAE7CC,EAAiBN,EAAWO,KAAI,SAACC,EAAoBC,GACvD,IAAMC,EAAQ,UAAMV,EAAWW,MAAM,EAAGF,EAAQ,GAAGG,KAAK,KAA1C,KACRC,EAAK,mBAAepC,EAAf,mBACTiC,EAAQ,WAAMI,EAAAA,EAAAA,IAAgBJ,IAAtB,IAGV,OAAID,IAAUL,GAAwBI,IAAehB,EAC5C,MAIP,UAAC,EAAAuB,SAAD,YACE,iBAAMC,UAAWxC,EAAQF,kBAAzB,eACCmC,IAAUL,GACT,iBAAMa,MAAO,CAAEC,OAAQ,WAAvB,SAAqCV,KAErC,SAAC,KAAD,CACEW,GAAIN,EACJO,QAAS,WACPtC,GACEuC,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,KAEvD,EANH,SAQGf,MAbP,sBAA8BC,EAAMe,YAkBvC,IAEGC,EAAsB,GAEtBlC,IACFkC,EAAe,EACb,SAAC,EAAAV,SAAD,WACE,6BACE,iBAAMC,UAAWxC,EAAQF,kBAAzB,eACCkB,EAFH,kBADF,+BASJ,IAAMkC,EAAsB,EAC1B,SAAC,EAAAX,SAAD,WACE,SAAC,KAAD,CACEI,GAAE,mBAAc1C,EAAd,WACF2C,QAAS,WACPtC,GAASuC,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,KAC9D,EAJH,SAMG9C,KAPL,0BAD0B,eAWvB6B,IAXuB,OAYvBmB,IAeL,OACE,UAAC,EAAAV,SAAD,YACE,iBAAKC,UAAWxC,EAAQmD,gBAAxB,UACGjC,IACC,SAAC3B,EAAD,CACE6D,UAAWlC,EACXjB,WAAYA,EACZoD,WAAYnD,EACZoD,QApBkB,WAC1BnC,GAAoB,EACrB,EAmBShB,cAAeA,KAGnB,UAACoD,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAS,UAAKxC,EAAQ0D,aAAzC,WACE,SAACC,EAAA,EAAD,CACEf,QAtBa,WACjB7B,EACFT,GAASuC,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,MAE7DvC,GAAU,EAEb,EAiBSoD,GAAI,CACFC,OAAQ,oBACRC,gBAAiB,OACjBC,WAAY,EACZC,aAAc,EACdC,MAAO,GACPC,OAAQ,GACRC,YAAa,QATjB,UAYE,SAAC,MAAD,OAEF,gBAAK3B,UAAWxC,EAAQoE,gBAAiBC,IAAI,MAA7C,SACGnB,KAEH,SAAC,IAAD,CAAiBoB,KAAI,UAAKrE,EAAL,YAAmBuB,EAAWY,KAAK,MAAxD,UACE,SAAC,IAAD,CACEmC,GAAI,YACJC,MACE,SAAC,MAAD,CACE/B,MAAO,CACLwB,MAAO,OACPC,OAAQ,OACRO,KAAM,UACNC,WAAY,KAIlBC,QAAS,UACT/B,QAAS,WACPtC,GAASsE,EAAAA,EAAAA,IAAmB,4BAC7B,EACDnC,MAAO,CACLwB,MAAO,OACPC,OAAQ,OACRW,MAAO,UACPhB,OAAQ,oBACRM,YAAa,QAInB,gBAAK3B,UAAWxC,EAAQK,kBAAxB,SAA4CA,QAE5CD,IACA,SAAC0E,EAAA,EAAD,CACEC,QACE3D,EACI,+BACA4D,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,qBANV,UAUE,SAAC,IAAD,CACEiD,GAAI,WACJ3B,QAAS,WACPzB,GAAoB,EACrB,EACD8D,SAAUvE,IAAkBU,EAC5BoD,MAAM,SAAC,MAAD,CAAa/B,MAAO,CAAEgC,KAAM,aAClChC,MAAO,CACLyC,WAAY,UAEdP,QAAS,UACTQ,MAAO,0BAKf,gBAAK3C,UAAWxC,EAAQoF,kBAAxB,SAA4C/E,MAGjD,I,6EC5GD,GAAeX,EAAAA,EAAAA,IA5GA,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACXyF,gBAAiB,CACfnB,OAAQ,GACR,cAAe,CACbD,MAAO,GACPQ,KAAM,sBANC,GA4Gf,EAjG0B,SAAC,GAOA,IANzBa,EAMwB,EANxBA,WACArF,EAKwB,EALxBA,WAKwB,IAJxBsF,aAAAA,OAIwB,SAHxBC,EAGwB,EAHxBA,mBACAC,EAEwB,EAFxBA,qBACAzF,EACwB,EADxBA,QAEA,EAAgCP,EAAAA,SAAmC,MAAnE,eAAOiG,EAAP,KAAiBC,EAAjB,KACMC,EAAiBC,QAAQH,GAIzBI,EAAoB,WACxBH,EAAY,KACb,EAEKI,GAAsB1E,EAAAA,EAAAA,GAAciE,EAAY,CACpDhE,EAAAA,GAAAA,gBAEI0E,GAAsB3E,EAAAA,EAAAA,GAC1BpB,EACA,CAACqB,EAAAA,GAAAA,gBACD,GACA,GAGI2E,EAAyBF,GAAuBC,EAEtD,OACE,UAAC,EAAAzD,SAAD,YACE,SAACuC,EAAA,EAAD,CACEC,QACEkB,EACI,gBACAjB,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,+BANV,UAUE,SAAC,IAAD,CACEiD,GAAI,cACJ,mCACA,gBAAc,OACd,gBAAeqB,EAAiB,YAASM,EACzCtD,QApCY,SAACuD,GACnBR,EAAYQ,EAAMC,cACnB,EAmCOjB,MAAO,SACPX,MAAM,SAAC,MAAD,IACNG,QAAS,aACTM,SAAUM,IAAiBU,OAG/B,UAACI,EAAA,EAAD,CACE9B,GAAE,mBACF,gCACAmB,SAAUA,EACVY,KAAMV,EACNtC,QAAS,WACPwC,GACD,EACDS,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UAdhB,WAiBE,UAACE,EAAA,EAAD,CACE/D,QAAS,WACP4C,EAAmBM,EACpB,EACDb,UAAWc,GAAuBR,EAJpC,WAME,SAACqB,EAAA,EAAD,CAAcpE,UAAWxC,EAAQqF,gBAAjC,UACE,SAAC,MAAD,OAEF,SAACwB,EAAA,EAAD,8BAEF,UAACF,EAAA,EAAD,CACE/D,QAAS,WACP6C,EAAqBK,EACtB,EACDb,UAAWe,GAAuBT,EAJpC,WAME,SAACqB,EAAA,EAAD,CAAcpE,UAAWxC,EAAQqF,gBAAjC,UACE,SAAC,MAAD,OAEF,SAACwB,EAAA,EAAD,oCAKT,I,WCrHKC,GAAYC,EAAAA,EAAAA,IAAW,SAACpH,GAAD,OAC3BC,EAAAA,EAAAA,GAAa,CACXoH,YAAa,CACXC,YAAa,UACbC,YAAa,EACbC,YAAa,QACbnD,aAAc,EACdoD,uBAAwB,EACxBC,wBAAyB,EACzBpD,MAAO,EACPqD,mBAAoB,OACpBC,UAAW,SACXC,UAAW,OACXC,SAAU,WACVC,QAAS,EACTC,YAAa,EACb,SAAU,CACR1D,MAAO,IACP2D,SAAU,IACVC,gBAAiB,EACjBH,QAAS,GAEX,4BAA6B,CAC3B,SAAU,CACRzD,MAAO,OACP2D,SAAU,OACVC,gBAAiB,KAIvBC,WAAY,CACVL,SAAU,WACVM,MAAO,EACPC,IAAK,EACL,cAAe,CACb/D,MAAO,MAnCc,IAgE7B,EAvByB,SAAC,GAKA,IAJxBqC,EAIuB,EAJvBA,KACAwB,EAGuB,EAHvBA,WAGuB,IAFvBtF,UAAAA,OAEuB,MAFX,GAEW,EADvByF,EACuB,EADvBA,SAEMjI,EAAU8G,IAEhB,OACE,UAACvD,EAAA,GAAD,CACEC,MAAI,EACJhB,UAAS,UAAKxC,EAAQgH,YAAb,YACPV,EAAO,OAAS,GADT,YAEL9D,EAFK,qBAFX,WAME,SAACmB,EAAA,EAAD,CAAYf,QAASkF,EAAYtF,UAAWxC,EAAQ8H,WAApD,UACE,SAAC,MAAD,MAEDG,IAGN,E,iCC5EYC,EAAS,CACpB,CAAEC,MAAO,KAAMhD,MAAO,WACtB,CAAEgD,MAAO,KAAMhD,MAAO,YACtB,CAAEgD,MAAO,KAAMhD,MAAO,SACtB,CAAEgD,MAAO,KAAMhD,MAAO,SACtB,CAAEgD,MAAO,KAAMhD,MAAO,OACtB,CAAEgD,MAAO,KAAMhD,MAAO,QACtB,CAAEgD,MAAO,KAAMhD,MAAO,QACtB,CAAEgD,MAAO,KAAMhD,MAAO,UACtB,CAAEgD,MAAO,KAAMhD,MAAO,aACtB,CAAEgD,MAAO,KAAMhD,MAAO,WACtB,CAAEgD,MAAO,KAAMhD,MAAO,YACtB,CAAEgD,MAAO,KAAMhD,MAAO,aAGXiD,EAAOC,MAAMC,KAAKD,MAAM,KAAK,SAACE,EAAGC,GAAJ,OAAYA,EAAM,CAAlB,IAEpCC,GAAc,IAAIC,MAAOC,cAElBC,GAAQP,MAAMC,KACzBD,MAAM,KACN,SAACE,EAAGM,GAAJ,OAAgBA,EAAUJ,CAA1B,I,kIC6BIK,IAAepJ,EAAAA,EAAAA,IAAW,SAACC,GAAD,OAC9BC,EAAAA,EAAAA,GAAa,CACXmJ,KAAM,CACJ,oBAAqB,CACnBlE,MAAO,OACP,iBAAkB,CAChBA,MAAO,aAIbmE,MAAO,CACLC,aAAc,EACdC,SAAU,KAZgB,GAAXxJ,CAenByJ,GAAAA,IAcIC,IAAeC,EAAAA,EAAAA,aACnB,WAYEC,GACI,IAXFtJ,EAWC,EAXDA,QACAuE,EAUC,EAVDA,GACAY,EASC,EATDA,MASC,IARDoE,eAAAA,OAQC,aAPDC,UAAAA,OAOC,aANDzE,QAAAA,OAMC,MANS,GAMT,MALDkE,aAAAA,OAKC,SAJDQ,EAIC,EAJDA,aAIC,IAHDtB,MAAAA,OAGC,MAHO,GAGP,GACHuB,EAAAA,EAAAA,qBAAoBJ,GAAK,iBAAO,CAAEK,UAAAA,EAAT,IAEzB,OAAsC1I,EAAAA,EAAAA,WAAkB,GAAxD,eAAO2I,EAAP,KAAoBC,EAApB,KACA,GAA0B5I,EAAAA,EAAAA,UAAiB,IAA3C,eAAO6I,EAAP,KAAcC,EAAd,KACA,GAAsB9I,EAAAA,EAAAA,UAAiB,IAAvC,eAAO+I,EAAP,KAAYC,EAAZ,KACA,GAAwBhJ,EAAAA,EAAAA,UAAiB,IAAzC,eAAOiJ,EAAP,KAAaC,EAAb,MAEAC,EAAAA,EAAAA,YAAU,WAGR,GAAc,KAAVjC,EAAc,CAChB,IAAMkC,EAAalC,EAAM1G,MAAM,KAC/B0I,EAAQE,EAAW,IACnBN,EAASM,EAAW,IAEpBJ,EAAO,GAAD,OAAIK,SAASD,EAAW,KAC/B,CACF,GAAE,CAAClC,KAEJiC,EAAAA,EAAAA,YAAU,WACR,MD1FmB,SAACF,EAAcJ,EAAeE,GACrD,IAAMO,EAAc7B,KAAK8B,MAAL,UAAcN,EAAd,YAAsBJ,EAAtB,YAA+BE,IAEnD,GAAIS,MAAMF,GACR,MAAO,EAAC,EAAO,IAGjB,IAAMG,EAAcJ,SAASR,GACvBa,EAAYL,SAASN,GAErBY,EAAiBF,EAAc,GAAd,WAAuBA,GAAgBA,EACxDG,EAAeF,EAAY,GAAZ,WAAqBA,GAAcA,EAElDG,EAAa,IAAIpC,KAAK6B,GAAaQ,cAActJ,MAAM,KAAK,GAC5DuJ,EAAU,UAAMd,EAAN,YAAcU,EAAd,YAAgCC,GAEhD,MAAO,CAACC,IAAeE,EAAYA,EACpC,CCyEmCC,CAAUf,EAAMJ,EAAOE,GAArD,eAAOkB,EAAP,KAAgBF,EAAhB,KACAvB,EAAauB,EAAYE,EAC1B,GAAE,CAACpB,EAAOE,EAAKE,EAAMT,IAEtB,IAAME,EAAY,WAChBI,EAAS,IACTE,EAAO,IACPE,EAAQ,GACT,EAEKgB,EAAiB,WACrB,OAAI5B,KAEOC,IACDI,CAIX,EAcD,OACE,UAACrG,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,WAAW4I,EAAAA,GAAAA,GAAKpL,EAAQqL,gBAAT,WACZrL,EAAQsL,qBAAuBrC,IAJpC,WAOE,gBAAKzG,UAAWxC,EAAQuL,eAAxB,UACE,UAAChI,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,UAACC,GAAA,EAAD,CAAYC,QAASnH,EAAI/B,UAAWxC,EAAQ2L,WAA5C,WACE,0BAAOxG,IACM,KAAZJ,IACC,gBAAKvC,UAAWxC,EAAQ4L,iBAAxB,UACE,SAACC,GAAA,EAAD,CAASC,MAAO/G,EAASgH,UAAU,YAAnC,UACE,gBAAKvJ,UAAWxC,EAAQ+E,QAAxB,UACE,SAACiH,GAAA,EAAD,aAMTxC,IACC,SAACyC,GAAA,EAAD,CACEC,gBAAiB,CAAC,gBAAiB,oBACnCC,QAASvC,EACTzB,MAAO,eACP5D,GAAG,cACH6H,KAAK,cACLC,SAAU,SAACC,GACTzC,EAAeyC,EAAEC,OAAOJ,SACnBG,EAAEC,OAAOJ,SACZ1C,EAAa,IAAI,EAEpB,EACD+C,YAAU,UAKlB,4BACE,SAACC,GAAA,EAAD,CACExH,SAAUkG,IACV3I,UAAWxC,EAAQ0M,UAFrB,UAIE,UAACC,GAAA,EAAD,CACEpI,GAAE,UAAKA,EAAL,UACF6H,KAAI,UAAK7H,EAAL,UACJ4D,MAAO2B,EACP8C,cAAY,EACZP,SA9DY,SAACC,GACrBvC,EAASuC,EAAEC,OAAOpE,MACnB,EA6DSa,OAAO,SAACF,GAAD,IANT,WAQE,SAACnC,EAAA,EAAD,CAAUwB,MAAM,GAAGlD,UAAQ,EAA3B,SACG,YAEFiD,EAAOnG,KAAI,SAAC8K,GAAD,OACV,SAAClG,EAAA,EAAD,CACEwB,MAAO0E,EAAO1E,MADhB,SAIG0E,EAAO1H,OAJV,iBAEiBZ,EAFjB,oBAE+BsI,EAAO1H,OAH5B,UAUhB,SAACsH,GAAA,EAAD,CACExH,SAAUkG,IACV3I,UAAWxC,EAAQ0M,UAFrB,UAIE,UAACC,GAAA,EAAD,CACEpI,GAAE,UAAKA,EAAL,QACF6H,KAAI,UAAK7H,EAAL,QACJ4D,MAAO6B,EACP4C,cAAY,EACZP,SAnFU,SAACC,GACnBrC,EAAOqC,EAAEC,OAAOpE,MACjB,EAkFSa,OAAO,SAACF,GAAD,IANT,WAQE,SAACnC,EAAA,EAAD,CAAUwB,MAAM,GAAGlD,UAAQ,EAA3B,SACG,UAEFmD,EAAKrG,KAAI,SAAC+K,GAAD,OACR,SAACnG,EAAA,EAAD,CACEwB,MAAO2E,EADT,SAIGA,GAJH,iBAEiBvI,EAFjB,kBAE6BuI,GAHrB,UAUd,SAACL,GAAA,EAAD,CACExH,SAAUkG,IACV3I,UAAWxC,EAAQ0M,UAFrB,UAIE,UAACC,GAAA,EAAD,CACEpI,GAAE,UAAKA,EAAL,SACF6H,KAAI,UAAK7H,EAAL,SACJ4D,MAAO+B,EACP0C,cAAY,EACZP,SAxGW,SAACC,GACpBnC,EAAQmC,EAAEC,OAAOpE,MAClB,EAuGSa,OAAO,SAACF,GAAD,IANT,WAQE,SAACnC,EAAA,EAAD,CAAUwB,MAAM,GAAGlD,UAAQ,EAA3B,SACG,WAEF2D,GAAM7G,KAAI,SAACmI,GAAD,OACT,SAACvD,EAAA,EAAD,CAAUwB,MAAO+B,EAAjB,SACGA,GADH,iBAAsC3F,EAAtC,mBAAmD2F,GAD1C,cAUtB,IAGH,IAAexK,EAAAA,EAAAA,IAlPA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,wBACX8M,UAAW,CACT,qBAAsB,CACpBvI,YAAa,MAGd4I,EAAAA,IACAC,EAAAA,IAPO,IAQVzB,eAAgB,CACd0B,KAAM,GAER5B,gBAAe,kBACV0B,EAAAA,GAAAA,gBADS,IAEZG,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBC,cAAe,GACf3I,UAAW,GACX4I,aAAc,IAEhBhC,qBAAsB,CACpBrC,aAAc,oBACdqE,aAAc,MAvBL,GAkPf,CAAkClE,ICUlC,IAAe1J,EAAAA,EAAAA,IA1PA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,kCACR2N,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IAHO,IAIVC,aAAc,CACZ,QAAS,CACPzE,aAAc,EACdqE,aAAc,EAEd,qBAAsB,CACpBzJ,OAAQ,oBACR8J,YAAa,EAEb,QAAS,CACP9J,OAAQ,QAfL,GA0Pf,EAvNqB,SAAC,GAOK,IANzB7D,EAMwB,EANxBA,QACAsG,EAKwB,EALxBA,KACAsH,EAIwB,EAJxBA,qBACA7K,EAGwB,EAHxBA,WACA8K,EAEwB,EAFxBA,WACA5N,EACwB,EADxBA,WAEMK,GAAWC,EAAAA,EAAAA,MACjB,GAA0CU,EAAAA,EAAAA,WAAkB,GAA5D,eAAO6M,EAAP,KAAsBC,EAAtB,KACA,GAAwB9M,EAAAA,EAAAA,UAAiB,IAAzC,eAAO+M,EAAP,KAAaC,EAAb,KACA,GAAwBhN,EAAAA,EAAAA,UAAiB,IAAzC,eAAOiN,EAAP,KAAaC,EAAb,KACA,GAAsClN,EAAAA,EAAAA,WAAkB,GAAxD,eAAOmN,EAAP,KAAoBC,EAApB,KACA,GAAgCpN,EAAAA,EAAAA,WAAkB,GAAlD,eAAOqN,EAAP,KAAiBC,EAAjB,KACA,GAAkDtN,EAAAA,EAAAA,WAAkB,GAApE,eAAOuN,EAAP,KAA0BC,EAA1B,MAEArE,EAAAA,EAAAA,YAAU,WAMR,GALIyD,EAAWa,iBACbT,EAAQJ,EAAWa,eAAeC,eAClCF,GAAqB,IAGnBZ,EAAWe,qBAAsB,CACnC,IAAMC,EAAY,IAAInG,KAAKmF,EAAWe,sBACtC,GAA6B,iBAAzBC,EAAU7L,WAA+B,CAC3C,IAAMkH,EAAO2E,EAAUlG,cACjBmB,GFzCetB,EEyCMqG,EAAUC,WAAa,GFxC3C,GAAN,WAAetG,GAAf,UAA0BA,GEyCrBwB,EAAM6E,EAAUE,UACjBtE,MAAMT,IAAkB,QAAVF,GAAoBW,MAAMP,IAC3CiE,EAAQ,GAAD,OAAIjE,EAAJ,YAAYJ,EAAZ,YAAqBE,GAE/B,CACDyE,GAAqB,EACtB,CFhDuB,IAACjG,CEiD1B,GAAE,CAACqF,IAEJ,IAAMmB,GAAcC,EAAAA,EAAAA,QAAmB,MAUjCC,EAAY,WAChBnB,GAAiB,GACjBE,EAAQ,IACJe,EAAYG,SACdH,EAAYG,QAAQxF,WAEvB,EAkEKyF,EACJZ,IAA+B,eAATR,GAAkC,KAATA,GAEjD,OACE,UAACqB,GAAA,EAAD,CACEvD,MAAM,uBACN1I,UAAWkD,EACXhD,QAAS,WACP4L,IACAtB,GAAqB,EACtB,EANH,WAQE,iBAAKpL,UAAWxC,EAAQsP,aAAxB,WACE,gDADF,KACqCvM,MAErC,kBACEwM,YAAU,EACVC,aAAa,MACbC,SAAU,SAACnD,IA9FA,SAACA,GAChBA,EAAEoD,gBACH,CA6FOD,CAASnD,EACV,EALH,UAOG8C,IACC,SAAC7L,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAAC1D,GAAA,EAAD,CACE9D,MAAM,SACN5D,GAAG,SACH6H,KAAK,SACLD,QAAS2B,EACTzB,SAAU,SAACC,GACTyB,GAAkBD,EACnB,EACD3I,MAAO,SACP+G,gBAAiB,CAAC,UAAW,iBAInC,SAAC3I,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAACC,GAAA,EAAD,CACEC,iBAAkB7B,EAClBzJ,GAAG,OACH6H,KAAK,OACLjH,MAAM,OACNoE,gBACGuE,GAAkBU,GAA8B,KAATR,EAE1C3B,SAAU,SAACC,GACT2B,EAAQ3B,EAAEC,OAAOpE,MAClB,EACD2H,gBAAiB,CACf,CAAE3K,MAAO,aAAcgD,MAAO,cAC9B,CAAEhD,MAAO,aAAcgD,MAAO,oBAIpC,SAAC5E,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAS,UAAKxC,EAAQ0N,aAAb,KAA5B,UACE,SAAC,GAAD,CACEnJ,GAAG,OACHY,MAAM,OACNoE,iBA1ICuE,IAA2B,eAATE,GAAkC,eAATA,IA2I5C1E,IAAK0F,EACL7G,MAAO+F,EACPjF,cAAc,EACdQ,aAAc,SAACyE,EAAchD,GAC3BmD,EAAenD,GACXA,GACFiD,EAAQD,EAEX,OAGL,UAAC3K,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,WACE,SAAC,IAAD,CACExL,GAAI,QACJyJ,KAAK,SACLrJ,QAAQ,UACR/B,QAASsM,EACT/J,MAAO,WAET,SAAC,IAAD,CACEZ,GAAI,OACJyJ,KAAK,SACLrJ,QAAQ,aACRM,SACG6I,GAA0B,KAATE,GACjBF,IAAkBM,GACnBE,EAEF1L,QAzGqB,WAC7B2L,GAAY,GACZ,IAAMyB,EAAiBnC,EAAWzB,KAC5B6D,EAAYpC,EAAWqC,WAEvBC,EACHrC,GAA0B,eAATE,EAAlB,UAAkDE,EAAlD,cAA0C,GAEvCJ,GAA0B,eAATE,EAvDH,SACnBgC,EACAC,EACAE,GAEAC,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,sCAG8DqC,EAAAA,EAAAA,IACxD0N,GAJN,uBAKoBC,GAChB,CACEI,QAASF,EACTG,KAAMtC,IAGTuC,MAAK,SAACC,GACLjC,GAAY,GACZX,GAAqB,EACtB,IACA6C,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnCnC,GAAY,EACb,GACJ,CAqCCqC,CAAaZ,EAAgBC,EAAWE,GAnCjB,SACvBH,EACAC,GAEAG,EAAAA,EAAAA,OAEI,SAFJ,0BAGuBnQ,EAHvB,sCAG8DqC,EAAAA,EAAAA,IACxD0N,GAJN,uBAKoBC,IAEjBM,MAAK,WACJhC,GAAY,GACZX,GAAqB,EACtB,IACA6C,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnCnC,GAAY,EACb,GACJ,CAWGsC,CAAiBb,EAAgBC,EAMpC,EA2FS9K,MAAO,iBAMlB,I,mCC1KD,GAhFqB,SAAC,GAQK,IAPzB2L,EAOwB,EAPxBA,2BACAC,EAMwB,EANxBA,WACAC,EAKwB,EALxBA,eACAhB,EAIwB,EAJxBA,eAEAiB,EAEwB,EAFxBA,WAEwB,IADxBC,gBAAAA,OACwB,MADN,GACM,EAClB5Q,GAAWC,EAAAA,EAAAA,MAMjB,GAAyC4Q,EAAAA,GAAAA,IALpB,kBAAML,GAA2B,EAAjC,IACF,SAACM,GAAD,OACjB9Q,GAAS+Q,EAAAA,EAAAA,IAAqBD,GADb,IAInB,eAAOE,EAAP,KAAsBC,EAAtB,KACA,GAA4CtQ,EAAAA,EAAAA,WAAkB,GAA9D,eAAOuQ,EAAP,KAAuBC,EAAvB,KAEA,IAAKzB,EACH,OAAO,KAeT,OACE,SAAC0B,GAAA,EAAD,CACE5F,MAAK,gBACL6F,YAAa,SACbC,OAAQb,EACRc,WAAW,SAAC,MAAD,IACXC,UAAWR,EACXS,UApBoB,WACtB,IACMC,GADwBC,EAAAA,EAAAA,IAAgBjC,GACNkC,SAAS,KACjDX,EACE,SADa,0BAEMP,EAFN,yBAEqChB,GAFrC,OAGS,KAApBkB,EAAA,sBACmBA,GADnB,qBAEkBc,EAFlB,yBAE4CR,IAGjD,EAUGlO,QA7BY,kBAAMwN,GAA2B,EAAjC,EA8BZqB,qBACE,UAACC,GAAA,EAAD,gDACmC,mBACjC,wBAAIH,EAAAA,EAAAA,IAAgBjC,KAAqB,IACpB,KAApBkB,GACC,UAAC,EAAA3O,SAAD,YACE,mBACA,kBAFF,eAIE,mBACA,4BAAS2O,OAGX,GAZJ,MAcI,mBACF,kBACCD,GAAkC,KAApBC,IACb,SAACjF,GAAA,EAAD,CACE9G,MAAO,sBACP+G,gBAAiB,CAAC,MAAO,MACzBC,QAASqF,EACTrJ,MAAO,kBACP5D,GAAG,kBACH6H,KAAK,kBACLC,SAAU,SAACC,GACTmF,GAAmBD,EACpB,EACDa,YAAY,SAOzB,ECuCD,IAAe3S,EAAAA,EAAAA,IArHA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACR2N,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IAJQ,GAqHf,EArG0B,SAAC,GAOA,IANzBzN,EAMwB,EANxBA,QACAsG,EAKwB,EALxBA,KACAsH,EAIwB,EAJxBA,qBACA7K,EAGwB,EAHxBA,WACA9C,EAEwB,EAFxBA,WACAqS,EACwB,EADxBA,WAEMhS,GAAWC,EAAAA,EAAAA,MACjB,GAAgDU,EAAAA,EAAAA,WAAkB,GAAlE,eAAOsR,EAAP,KAAyBC,EAAzB,KACA,GAAgCvR,EAAAA,EAAAA,WAAkB,GAAlD,eAAOqN,EAAP,KAAiBC,EAAjB,KACM0B,EAAYqC,EAAWpC,YAE7B9F,EAAAA,EAAAA,YAAU,WACR,IAAMtH,EAAS2P,IAAIH,EAAY,oBAAqB,OACpDE,EAA+B,OAAX1P,EACrB,GAAE,CAACwP,IAEJ,IAsBMpD,EAAY,WAChBsD,GAAoB,EACrB,EAED,OACE,UAACnD,GAAA,EAAD,CACEvD,MAAM,iBACN1I,UAAWkD,EACXhD,QAAS,WACP4L,IACAtB,GAAqB,EACtB,EANH,WAQE,UAACrK,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQsP,aAAtC,qBACWrP,MAGX,kBACEsP,YAAU,EACVC,aAAa,MACbC,SAAU,SAACnD,IA1CA,SAACA,GAChBA,EAAEoD,iBACFnB,GAAY,GAEZ6B,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,sCAG8DqC,EAAAA,EAAAA,IACxDS,GAJN,uBAKoBkN,GAChB,CAAEnN,OAAQyP,EAAmB,UAAY,aAE1ChC,MAAK,WACJhC,GAAY,GACZX,GAAqB,EACtB,IACA6C,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnCnC,GAAY,EACb,GACJ,CAuBOkB,CAASnD,EACV,EALH,WAOE,SAAC/I,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAAC1D,GAAA,EAAD,CACE9D,MAAM,YACN5D,GAAG,YACH6H,KAAK,YACLD,QAASoG,EACTlG,SAAU,SAACC,GACTkG,GAAqBD,EACtB,EACDpN,MAAO,oBACP+G,gBAAiB,CAAC,UAAW,YAC7BnH,QACE,0FAIN,UAACxB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,WACE,SAAC,IAAD,CACExL,GAAI,QACJyJ,KAAK,SACLrJ,QAAQ,UACR/B,QAASsM,EACT/J,MAAO,WAET,SAAC,IAAD,CACEZ,GAAI,OACJyJ,KAAK,SACLrJ,QAAQ,aACRM,SAAUqJ,EACVnJ,MAAO,kBAMlB,I,4DCHD,IAAezF,EAAAA,EAAAA,IAhIA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,gBACX8S,eAAgB,CACd/K,WAAY,EACZ,cAAe,CACbzD,OAAQ,KAIZyO,gBAAiB,CACfC,cAAe,aACf,cAAe,CACb3O,MAAO,GACPC,OAAQ,KAGZ2O,UAAW,CACT5O,MAAO,QAENwJ,EAAAA,IACAqF,EAAAA,IApBQ,GAgIf,EAzGuB,SAAC,GAMA,IALtB7S,EAKqB,EALrBA,WACAC,EAIqB,EAJrBA,cACAF,EAGqB,EAHrBA,QACAsS,EAEqB,EAFrBA,WAEqB,IADrBS,OAAAA,OACqB,SACrB,GAAgC9R,EAAAA,EAAAA,UAAc,CAAC,GAA/C,eAAO+R,EAAP,KAAiBC,EAAjB,KASA,GAA8B9B,EAAAA,GAAAA,IAPJ,SAACX,GACzB,IAAI0C,EAAWT,IAAIjC,EAAK,iBAAkB,CAAC,GAE3CyC,EAAYC,EACb,IACuB,SAAC9B,GAAD,OAA+B,CAA/B,IAEf+B,GAAT,eAEMC,EAAWC,OAAOC,KAAKN,GACvBO,GAAeC,EAAAA,EAAAA,cAAY,WAC/BL,EACE,MADe,0BAEIlT,EAFJ,oCAE0CC,GAG5D,GAAE,CAACD,EAAYC,EAAeoS,IAS/B,OAPAlI,EAAAA,EAAAA,YAAU,WACJkI,GACFiB,GAGH,GAAE,CAACjB,EAAYiB,IAEZR,GAEA,SAAC,EAAAxQ,SAAD,UACG6Q,EAASrR,KAAI,SAAC0R,EAAiBxR,GAC9B,IAAMyR,EAAarL,MAAMsL,QAAQX,EAASS,IACtCT,EAASS,GAAS1R,IAAI6R,oBAAoBxR,KAAK,MAC/CwR,mBAAmBZ,EAASS,IAEhC,OACE,UAACI,EAAA,EAAD,CACErR,UAAWxC,EAAQ8T,eADrB,WAIE,4BAASL,KACT,kBACCC,IANH,mBAEmBD,EAFnB,YAE8BxR,EAAMe,YAOvC,OAML,UAACO,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,SAACjI,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJG,GAAI,CACFc,UAAW,OACX4I,aAAc,OALlB,UAQE,eACE7K,MAAO,CACLiC,UAAW,IACX4I,aAAc,KAHlB,gCAUF,SAAC/J,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACsQ,GAAA,EAAD,CAAOvR,UAAWxC,EAAQgU,MAAO,aAAW,eAA5C,UACE,SAACC,GAAA,EAAD,UACGb,EAASrR,KAAI,SAAC0R,EAAiBxR,GAC9B,IAAMyR,EAAarL,MAAMsL,QAAQX,EAASS,IACtCT,EAASS,GAAS1R,IAAI6R,oBAAoBxR,KAAK,MAC/CwR,mBAAmBZ,EAASS,IAEhC,OACE,UAACS,GAAA,EAAD,YACE,SAACC,GAAA,EAAD,CACEC,UAAU,KACVC,MAAM,MACN7R,UAAWxC,EAAQ6S,UAHrB,SAKGY,KAEH,SAACU,GAAA,EAAD,CAAWG,MAAM,QAAjB,SAA0BZ,MAR5B,eAAuBzR,EAAMe,YAWhC,YAMZ,I,2ECnED,IAAetD,EAAAA,EAAAA,IAnDA,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACXmJ,KAAM,CACJwL,QAAS,SACTrQ,OAAQ,GACRnE,OAAQ,EACR8E,MAAO,UACP2P,WAAY,SACZtL,SAAU,GACVhE,WAAY,SACZjB,MAAO,OACPmJ,eAAgB,aAChB,UAAW,CACTtJ,gBAAiB,cACjBe,MAAO,QAET,cAAe,CACbZ,MAAO,IAET,aAAc,CACZY,MAAO,UACPoC,YAAa,aArBN,GAmDf,EAxB2B,SAAC,GAOI,IAN9BhC,EAM6B,EAN7BA,SACArC,EAK6B,EAL7BA,QACA4B,EAI6B,EAJ7BA,KACAW,EAG6B,EAH7BA,MACAnF,EAE6B,EAF7BA,QACGyU,GAC0B,cAC7B,OACE,SAACC,GAAA,GAAD,kBACMD,GADN,IAEExP,SAAUA,EACVrC,QAASA,EACTJ,WAAW4I,EAAAA,GAAAA,GAAKpL,EAAQ+I,KAAM,mBAC9B4L,UAAWnQ,EACXZ,GAAI,CACFM,OAAQ,WAPZ,UAUE,iBAAM1B,UAAW,aAAjB,SAAgC2C,MAGrC,ICTD,IAAezF,EAAAA,EAAAA,IAhDA,kBACbE,EAAAA,EAAAA,IAAa,UACRkT,EAAAA,IAFQ,GAgDf,EA7B2B,SAAC,GAIK,IAH/B8B,EAG8B,EAH9BA,MACA5U,EAE8B,EAF9BA,QACA8L,EAC8B,EAD9BA,MAEA,OACE,UAAC,EAAAvJ,SAAD,YACE,gBAAKC,UAAWxC,EAAQ6U,WAAxB,SAAqC/I,KACrC,gBAAItJ,UAAWxC,EAAQ8U,cAAvB,WACE,qCACCF,EAAM7S,KAAI,SAACgT,EAAY9S,GACtB,OACE,yBACE,SAAC6C,EAAA,EAAD,CAAgBC,QAASgQ,EAAWhQ,SAAW,GAA/C,UACE,SAAC,GAAD,CACEI,MAAO4P,EAAW5P,MAClBX,KAAMuQ,EAAWvQ,KACjB5B,QAASmS,EAAWC,OACpB/P,SAAU8P,EAAW9P,cAN3B,yBAA2BhD,EAAMe,YAWpC,SAIR,I,oCC3BD,IAAetD,EAAAA,EAAAA,IA/BA,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACXqV,SAAU,CACR/H,QAAS,OACTC,WAAY,SACZ,cAAe,CACblJ,MAAO,GACPC,OAAQ,GACRC,YAAa,EACbyD,SAAU,GACVsN,UAAW,KAGfC,aAAc,CACZjQ,WAAY,SACZkQ,SAAU,SACVC,aAAc,aAhBL,GA+Bf,EAXsB,SAAC,GAAgD,IAA9CrV,EAA6C,EAA7CA,QAASwE,EAAoC,EAApCA,KAAM8Q,EAA8B,EAA9BA,QACtC,OACE,iBAAK9S,UAAWxC,EAAQiV,SAAxB,UACGzQ,GACD,iBAAMhC,UAAWxC,EAAQmV,aAAzB,SACGG,EAAQA,EAAQzT,OAAS,OAIjC,IClBK0T,GAAe9V,EAAAA,MACnB,kBAAM,uCAAN,IAEI+V,GAAe/V,EAAAA,MACnB,kBAAM,uCAAN,IAEIgW,GAAiBhW,EAAAA,MACrB,kBAAM,uCAAN,IAEIiW,GAAajW,EAAAA,MACjB,kBAAM,uCAAN,IAEIkW,GAAelW,EAAAA,MACnB,kBAAM,uCAAN,IAEImW,GAAgBnW,EAAAA,MACpB,kBAAM,uCAAN,IAEIoW,GAAepW,EAAAA,MACnB,kBAAM,uCAAN,IAEIqW,GAAkBrW,EAAAA,MACtB,kBAAM,uCAAN,IAEIsW,GAAgBtW,EAAAA,MACpB,kBAAM,uCAAN,IAEIuW,GAAcvW,EAAAA,MAClB,kBAAM,uCAAN,IAEIwW,GAAcxW,EAAAA,MAClB,kBAAM,uCAAN,IAEIyW,GAAczW,EAAAA,MAClB,kBAAM,uCAAN,IAEI0W,GAAgB1W,EAAAA,MACpB,kBAAM,uCAAN,IAEI2W,GAAc3W,EAAAA,MAClB,kBAAM,uCAAN,IAEI4W,GAAc5W,EAAAA,MAClB,kBAAM,uCAAN,IAQW6W,GAAgC,CAC3C,CACE9R,MAAM,SAAC2R,GAAD,IACNI,WAAY,CAAC,MAAO,MAAO,MAAO,OAAQ,QAE5C,CACE/R,MAAM,SAACuR,GAAD,IACNQ,WAAY,CAAC,MAAO,MAAO,QAE7B,CACE/R,MAAM,SAACwR,GAAD,IACNO,WAAY,CAAC,QAEf,CACE/R,MAAM,SAACyR,GAAD,IACNM,WAAY,CAAC,MAAO,SAEtB,CACE/R,MAAM,SAAC4R,GAAD,IACNG,WAAY,CAAC,MAAO,SAEtB,CACE/R,MAAM,SAACqR,GAAD,IACNU,WAAY,CAAC,MAAO,MAAO,QAE7B,CACE/R,MAAM,SAACgR,GAAD,IACNe,WAAY,CAAC,OAAQ,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,IAAK,SAEpE,CACE/R,MAAM,SAACiR,GAAD,IACNc,WAAY,CAAC,MAAO,SAEtB,CACE/R,MAAM,SAACkR,GAAD,IACNa,WAAY,CAAC,QAEf,CACE/R,MAAM,SAACmR,GAAD,IACNY,WAAY,CAAC,MAAO,QAEtB,CACE/R,MAAM,SAAC0R,GAAD,IACNK,WAAY,CAAC,QAEf,CACE/R,MAAM,SAAC6R,GAAD,IACNE,WAAY,CAAC,MAAO,MAAO,MAAO,OAEpC,CACE/R,MAAM,SAAC+Q,GAAD,IACNgB,WAAY,CAAC,OAAQ,OAAQ,MAAO,SAEtC,CACE/R,MAAM,SAACoR,GAAD,IACNW,WAAY,CAAC,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAAQ,SAIjDC,GAAsB,SACjC/C,GAEI,IADJgD,EACG,wDACCC,EAAgBjD,EAChBjP,GAAO,SAACmS,GAAA,EAAD,IAEPlD,EAAQvB,SAAS,OACnB1N,GAAO,SAACoS,GAAA,EAAD,IACPF,EAAgBjD,EAAQtR,MAAM,GAAI,IAGpC,IATG,EASG0U,EAAmBpD,EAAQ9E,cAT9B,WAUe2H,IAVf,IAUH,2BAAmC,CAAC,IAAD,EAAxBQ,EAAwB,mBACfA,EAAIP,YADW,IACjC,2BAAkC,CAAC,IAAxBQ,EAAuB,QAC5BF,EAAiB3E,SAAjB,WAA8B6E,MAChCvS,EAAOsS,EAAItS,KAEd,CALgC,+BAMlC,CAhBE,gCAkBEiP,EAAQvB,SAAS,MAAQuB,EAAQuD,QAAQ,KAAO,IACnDxS,GAAO,SAACsR,GAAD,KAGT,IAAMmB,EAAYP,EAAcjV,MAAM,KAEtC,OAAIgV,EACKjS,GAGF,SAAC,GAAD,CAAeA,KAAMA,EAAM8Q,QAAS2B,GAC5C,E,oCCwMD,IAAevX,EAAAA,EAAAA,IAlTA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,wBACXsX,cAAe,CACbhO,SAAU,GACVsL,WAAY,OACZ3P,MAAO,OACP9E,OAAQ,SACRsN,cAAe,GACfH,QAAS,OACTC,WAAY,SACZ,UAAW,CACThJ,YAAa,KAGjBgT,aAAc,CACZjO,SAAU,GACVnJ,OAAQ,cACRmF,WAAY,SACZkQ,SAAU,SACVC,aAAc,WACdpR,MAAO,QAETmT,qBAAsB,CACpBlO,SAAU,GACVsL,WAAY,UAEd6C,gBAAiB,CACfxS,MAAO,WAETyS,UAAW,CACTzS,MAAO,UACP8C,WAAY,IAEX4F,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IAnCQ,GAkTf,EA5QoB,SAAC,GAMH,IALhBrK,EAKe,EALfA,UACAmU,EAIe,EAJfA,iBACAtX,EAGe,EAHfA,WACAqS,EAEe,EAFfA,WACAtS,EACe,EADfA,QAEMM,GAAWC,EAAAA,EAAAA,MACXiX,GAAmB7W,EAAAA,EAAAA,IAAY8W,EAAAA,IACrC,GAA4BxW,EAAAA,EAAAA,UAAiB,IAA7C,eAAOyW,EAAP,KAAeC,EAAf,KACA,GAAgC1W,EAAAA,EAAAA,UAAiB,IAAjD,eAAO2W,EAAP,KAAiBC,EAAjB,KACA,GAAkC5W,EAAAA,EAAAA,WAAkB,GAApD,eAAO6W,EAAP,KAAkBC,EAAlB,KACA,GAA0C9W,EAAAA,EAAAA,WAAkB,GAA5D,eAAO+W,EAAP,KAAsBC,EAAtB,KACA,GAAkChX,EAAAA,EAAAA,UAAiB,IAAnD,eAAOiX,EAAP,KAAkBC,EAAlB,KACA,GAAsClX,EAAAA,EAAAA,UAAiB,IAAvD,eAAOmX,EAAP,KAAoBC,EAApB,KAEMrI,GAAiB1N,EAAAA,EAAAA,IAAgBgQ,EAAWlG,MAC5CkM,EAAchG,EAAWiG,KACzBC,EAAcnF,OAAOC,KAAKgF,GAAe,CAAC,GAG1CG,EADcnG,EAAWlG,KAAK3K,MAAM,KACViX,OAAS,GAkEnCC,EAAU,SAACC,GAAD,OACd,iBAAKpW,UAAWxC,EAAQmX,aAAxB,gBACMyB,EAAS,IAAM,GADrB,UAC8B,4BAASH,MAFzB,EAMhB,OACE,SAAC,EAAAlW,SAAD,WACE,SAAC8M,GAAA,EAAD,CACEjM,UAAWA,EACX0I,MACEkM,GACE,iBAAMvV,MAAO,CAAEoC,MAAO,WAAtB,wBADW,YAMfvB,QAAS,WACPiU,GAAiB,EAClB,EACD1F,UACEmG,GACE,SAAC,MAAD,CAAcvV,MAAO,CAAEgC,KAAM,cAE7B,SAAC,MAAD,IAhBN,SAoBGuT,GACC,SAAC,EAAAzV,SAAD,WACE,UAACgB,EAAA,GAAD,CAAMiI,WAAS,EAAf,UACGmN,GAAQ,GADX,0CAE0C,KACxC,eAAGnW,UAAWxC,EAAQsX,UAAtB,UACGY,EADH,MACiBE,KACZ,IALP,KAOE,UAAC7U,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,WACE,SAAC,IAAD,CACExL,GAAI,SACJyJ,KAAK,SACLrJ,QAAQ,UACR/B,QAhDK,WACnBuV,EAAa,IACbE,EAAe,IACfJ,GAAiB,EAClB,EA6Ce9S,MAAO,YAET,SAAC,IAAD,CACE6I,KAAK,SACLrJ,QAAQ,YACR/B,QAlFS,WACvB,IAAMiW,GAAgB,UAAQP,UACvBO,EAAYX,GAEnB,IAAMY,EAAQtB,EAAmBlF,EAAWpC,WAAa,OAEzDE,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,gCAGyD+P,EAHzD,uBAGsF8I,GAClF,CAAEP,KAAMM,IAETtI,MAAK,SAACC,GACL+G,GAAiB,GACjBQ,GAAa,EACd,IACAtH,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnCqH,GAAa,EACd,GACJ,EA+DexT,GAAI,YACJY,MAAO,wBAMf,UAAC5B,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,SAACuN,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,uBACT2X,SAAUhZ,EAFZ,UAIE,UAAC4T,EAAA,EAAD,CACEjQ,GAAI,CACFsJ,QAAS,OACTgM,SAAU,SACVjV,MAAO,QAJX,UAOG0U,GAAQ,IACT,iBAAKnW,UAAWxC,EAAQoX,qBAAxB,2BAEE,kBACwB,IAAvBoB,EAAY3W,QACX,iBAAMW,UAAWxC,EAAQqX,gBAAzB,gDAIA,SAAC,EAAA9U,SAAD,KAEF,SAACsR,EAAA,EAAD,CAAKjQ,GAAI,CAAEc,UAAW,MAAO4I,aAAc,QAA3C,SACGkL,EAAYzW,KAAI,SAACoX,EAAgBlX,GAChC,IAAMmX,EAAM3G,IAAI6F,EAAD,UAAiBa,GAAU,IAC1C,MAAY,KAARC,GAEA,SAACL,EAAA,EAAD,CAEEC,OAAQ,CAAC1X,EAAAA,GAAAA,0BACT2X,SAAUhZ,EACVoZ,UAAQ,EACRC,WAAY,CACVC,WAAY,KACZC,SAAU,MAPd,UAUE,SAACC,GAAA,EAAD,CACEhX,MAAO,CACLmQ,cAAe,OACfzO,YAAa,MACbmJ,aAAc,OAEhBoM,KAAK,QACLvU,MAAK,UAAKgU,EAAL,cAAiBC,GACtBvU,MAAM,UACN0U,YAAY,SAACI,GAAA,EAAD,IACZH,SAAU,YApHlB,SAACL,EAAgBC,GACnCjB,EAAagB,GACbd,EAAee,GACfnB,GAAiB,EAClB,CAiH6B2B,CAAYT,EAAQC,EACrB,KAtBL,eACenX,IA0BZ,IACR,eAKT,SAAC8W,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,uBACT2X,SAAUhZ,EACVqZ,WAAY,CAAErU,UAAU,EAAMrC,QAAS,MAHzC,UAKE,UAACW,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,UAACjI,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQkX,cAAtC,WACE,SAAC,MAAD,IADF,mBAGA,SAAC3T,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAACkK,GAAA,EAAD,CACE1R,MAAOuP,EACPvS,MAAO,UACPZ,GAAI,YACJ6H,KAAM,YACN0N,YAAa,gBACbzN,SAAU,SAACC,GACTqL,EAAUrL,EAAEC,OAAOpE,MACpB,OAGL,SAAC5E,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAACkK,GAAA,EAAD,CACE1R,MAAOyP,EACPzS,MAAO,YACPZ,GAAI,cACJ6H,KAAM,cACN0N,YAAa,kBACbzN,SAAU,SAACC,GACTuL,EAAYvL,EAAEC,OAAOpE,MACtB,OAGL,UAAC5E,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,WACE,SAAC,IAAD,CACExL,GAAI,QACJyJ,KAAK,SACLrJ,QAAQ,UACRE,MAAM,UACNjC,QA5NA,WAChBiV,EAAY,IACZF,EAAU,GACX,EA0NiBxS,MAAO,WAET,SAAC,IAAD,CACE6I,KAAK,SACLrJ,QAAQ,aACRM,SACsB,KAApB2S,EAASmC,QACS,KAAlBrC,EAAOqC,QACPjC,EAEFlV,QAlOI,WACpBmV,GAAa,GACb,IAAMiC,EAAc,CAAC,EAErBA,EAAOtC,GAAUE,EACjB,IAAMqC,GAAU,kBAAQ3B,GAAgB0B,GAElClB,EAAQtB,EAAmBlF,EAAWpC,WAAa,OAEzDE,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,gCAGyD+P,EAHzD,uBAGsF8I,GAClF,CAAEP,KAAM0B,IAET1J,MAAK,SAACC,GACL+G,GAAiB,GACjBQ,GAAa,EACd,IACAtH,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnCqH,GAAa,EACd,GACJ,EA4MiBxT,GAAG,UACHY,MAAO,uBAU1B,I,oCC3KD,IAAezF,EAAAA,EAAAA,IApJA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACR2N,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IAJQ,GAoJf,EArIsB,SAAC,GAMK,IAL1BzN,EAKyB,EALzBA,QACAka,EAIyB,EAJzBA,4BACAC,EAGyB,EAHzBA,YACAC,EAEyB,EAFzBA,YACAC,EACyB,EADzBA,WAEM/Z,GAAWC,EAAAA,EAAAA,MACX+C,EAAU,kBAAM4W,GAA4B,EAAlC,EAChB,GAAkCjZ,EAAAA,EAAAA,WAAkB,GAApD,eAAOqZ,EAAP,KAAkBC,EAAlB,KACA,GAA0CtZ,EAAAA,EAAAA,UAAiB,IAA3D,eAAOuZ,EAAP,KAAsBC,EAAtB,KACA,GAAsCxZ,EAAAA,EAAAA,UAAiB,IAAvD,eAAOyZ,EAAP,KAAoBC,EAApB,KAEA,IAAKP,EACH,OAAO,KAET,IAAMQ,EAAW,2CAAG,WAAOC,GAAP,uFACLC,MAAMD,EAAK,CAAEE,OAAQ,QADhB,mFAAH,sDAIXC,EAAc,2CAAG,8FACfC,GAAO3Y,EAAAA,EAAAA,IAAgB8X,EAAc,YACrCc,GAAS5Y,EAAAA,EAAAA,IAAgB+X,GAEzBc,EAJe,uCAImCD,EAJnC,iBAIkDD,EAJlD,oBAIkEX,GAEvFM,EAAYO,GACT5K,KADH,2CACQ,WAAOC,GAAP,sFACCA,EAAI4K,GADL,gCAEwB5K,EAAI6K,OAF5B,OAEIC,EAFJ,OAIFhb,GACE+Q,EAAAA,EAAAA,IAAqB,CACnBkK,aAAcD,EAAOE,QACrBC,cAAeH,EAAOI,QAPxB,uBAWqBlL,EAAImL,OAXzB,UAWEA,EAXF,OAcEC,EAAWpL,EAAIqL,QAAQpJ,IAAI,uBAAuBhR,MAAM,KAAK,GAC7Dqa,GAAaC,EAAAA,EAAAA,IAAeH,IAAa,IAE/CI,EAAAA,EAAAA,IAAgBL,EAAMC,GACtBjB,EAAeiB,GACI,KAAfE,EAnBA,wBAoBFxY,IApBE,2BAuBJmX,EAAiBqB,GAvBb,4CADR,uDA0BGrL,OAAM,SAACW,GACN9Q,GAAS+Q,EAAAA,EAAAA,IAAqBD,GAC/B,IAlCkB,2CAAH,qDA+CpB,OACE,UAAC,WAAD,YACIoJ,IACA,SAACnL,GAAA,EAAD,CACEjM,UAAW+W,EACXtI,WAAW,SAAC,KAAD,IACX/F,MAAK,iBACLxI,QAASA,EAJX,UAME,kBACEiM,YAAU,EACVC,aAAa,MACbC,SAAU,SAACnD,IAhBJ,SAACA,GAChBA,EAAEoD,gBACH,CAeWD,CAASnD,EACV,EALH,wCAO4B,wBAAI2F,EAAAA,EAAAA,IAAgBmI,KAPhD,IAOmE,KACjE,mBACA,SAACnO,GAAA,EAAD,CACE9G,MAAO,UACP+G,gBAAiB,CAAC,MAAO,MACzBC,QAASmO,EACTnS,MAAO,UACP5D,GAAG,UACH6H,KAAK,UACLC,SAAU,SAACC,GACTiO,GAAcD,EACf,EACDjI,YAAY,MAEd,SAAC9O,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,UACE,SAAC,IAAD,CACExL,GAAI,UACJyJ,KAAK,SACLrJ,QAAQ,aACRE,MAAM,UACNjC,QAASoY,EACT7V,MAAO,mBAMhBqV,GACC,SAACnL,GAAA,EAAD,CACEjM,UAAW+W,EACXrO,MAAM,yBACNxI,QAzDmB,YACzB2Y,EAAAA,EAAAA,IAAavB,GACbpX,IACAmX,EAAiB,GAClB,EAsDO5I,WAAW,SAAC,MAAD,IAJb,UAME,UAACO,GAAA,EAAD,YACE,UAACyB,EAAA,EAAD,wEAEE,kBAFF,2CAKA,SAACA,EAAA,EAAD,WACE,SAACqI,GAAA,EAAD,CAAa/T,MAAOqS,WAIxB,OAGT,I,wBCvIK1T,IAAYC,EAAAA,EAAAA,IAAW,SAACpH,GAAD,OAC3BC,EAAAA,EAAAA,IAAa,kCACR4N,EAAAA,IACAD,EAAAA,IACAE,EAAAA,KACA0O,EAAAA,EAAAA,IAAmBxc,EAAMyc,QAAQ,KALX,IAwJ7B,GA/I2B,SAAC,GAOA,IAN1B9V,EAMyB,EANzBA,KACA+V,EAKyB,EALzBA,WACA5D,EAIyB,EAJzBA,YACAvY,EAGyB,EAHzBA,cACAoS,EAEyB,EAFzBA,WACArS,EACyB,EADzBA,WAEMD,EAAU8G,KACVxG,GAAWC,EAAAA,EAAAA,MAEjB,GAAsCU,EAAAA,EAAAA,UAAiBwX,GAAvD,eAAO6D,EAAP,KAAoBC,EAApB,KACA,GAA4Ctb,EAAAA,EAAAA,WAAkB,GAA9D,eAAOub,EAAP,KAAuBC,EAAvB,KA0DA,OACE,UAACpN,GAAA,EAAD,CACEvD,MAAK,kBACL1I,UAAWkD,EACXhD,QAAS+Y,EACTxK,WAAW,SAAC,MAAD,IAJb,WAME,mFAEE,kBAFF,sFAKE,mBACA,kBANF,gDAQA,iBACEtC,YAAU,EACVC,aAAa,MACbC,SAAU,SAACnD,IA1EE,SAACA,GAClBA,EAAEoD,iBAEF,IAAMgN,GAAmBpa,EAAAA,EAAAA,IAAgB,GAAD,OACnCrC,EADmC,YAEpCqS,EAAWlG,KAFyB,aAGlC,IAAI1D,MAAOiU,UAHuB,YAGVC,KAAKC,WAG7BC,GAAKC,EAAAA,GAAAA,IAAO,GAEZC,GAAeC,EAAAA,EAAAA,IACnBhd,EACAC,EACAoS,EAAWpC,WACX5F,SAASgI,EAAWoH,MAAQ,KAC5B4C,EACAQ,GACA,SAACI,GACC5c,GACE6c,EAAAA,EAAAA,IAAe,CACbC,WAAYV,EACZQ,SAAUA,IAGf,IACD,WACE5c,GAAS+c,EAAAA,EAAAA,IAAeX,GACzB,IACD,SAACY,GACChd,GAASid,EAAAA,EAAAA,IAAW,CAAEH,WAAYV,EAAkBY,IAAAA,IACrD,IACD,WACEhd,GAASkd,EAAAA,EAAAA,IAAmBd,GAC7B,KAGHe,EAAAA,GAAAA,IAAyBX,EAAIE,GAC7B1c,GACEod,EAAAA,EAAAA,IAAa,CACXZ,GAAAA,EACA7c,WAAAA,EACA0d,MAAM,EACNP,WAAYV,EACZkB,WAAY,EACZC,OAAQvB,EACRtO,KAAM,WACN8P,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACXzC,aAAc,MAGlBc,GACD,CAqBO4B,CAAW3R,EACZ,EALH,UAOE,UAAC/I,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,UAACjI,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQke,oBAAtC,WACE,SAAC3a,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAACkK,GAAA,EAAD,CACEtV,GAAG,oBACH6H,KAAK,oBACLC,SAAU,SAAClG,GACToW,EAAepW,EAAMoG,OAAOpE,MAC7B,EACDhD,MAAM,GACN6I,KAAM,OACN7F,MAAOmU,EACP5L,MACE4L,EAAYza,OAAS,MAAQ2a,EACzB,oDACA,QAIV,SAACjZ,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2P,aAAtC,UACE,SAAC1D,GAAA,EAAD,CACE9D,MAAM,iBACN5D,GAAG,iBACH6H,KAAK,iBACLD,QAASqQ,EACTnQ,SAAU,SAAClG,GACTsW,EAAkBtW,EAAMoG,OAAOJ,SAC3BhG,EAAMoG,OAAOJ,SACfoQ,EAAe9D,EAElB,EACDtT,MAAO,4BAIb,SAAC5B,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+P,eAAtC,UACE,SAAC,IAAD,CACExL,GAAI,gBACJyJ,KAAK,SACLrJ,QAAQ,aACRE,MAAM,UACNI,SAAUqX,EAAYza,OAAS,MAAQ2a,EACvCrX,MAAO,2BAOpB,ECnEKgZ,GAAuB,CAC3BC,WAAW,EACXC,cAAe,GACfC,kBAAmB,GACnBlS,KAAM,GACNsC,eAAgB,GAChBE,qBAAsB,GACtB8K,KAAM,IACNnB,KAAM,CAAC,EACPrI,WAAY,MA2sBd,IAAexQ,EAAAA,EAAAA,IA5vBA,kBACbE,EAAAA,EAAAA,IAAa,wCACX2e,mBAAoB,CAClBrR,QAAS,OACTC,WAAY,SACZ,cAAe,CACblJ,MAAO,GACPC,OAAQ,GACR0D,SAAU,GACVsN,UAAW,KAGfsJ,oBAAqB,CACnBtZ,WAAY,SACZmQ,aAAc,WACdD,SAAU,SACVjI,WAAY,SACZxF,WAAY,IAEd8W,iBAAkB,CAChBvR,QAAS,OACTE,eAAgB,gBAChBD,WAAY,SACZE,cAAe,GACfpE,aAAc,oBACduL,WAAY,OACZtL,SAAU,GACVrE,MAAO,OACP9E,OAAQ,aAEV4S,gBAAiB,CACfC,cAAe,eAEd8L,EAAAA,IACAC,EAAAA,IACAlR,EAAAA,IACAmR,EAAAA,IACA9L,EAAAA,IArCQ,GA4vBf,EA/rB0B,SAAC,GAOK,IAN9B9S,EAM6B,EAN7BA,QACAE,EAK6B,EAL7BA,cACAD,EAI6B,EAJ7BA,WACAgR,EAG6B,EAH7BA,WACA4N,EAE6B,EAF7BA,QACAC,EAC6B,EAD7BA,aAEMxe,GAAWC,EAAAA,EAAAA,MAEXiX,GAAmB7W,EAAAA,EAAAA,IAAY8W,EAAAA,IAC/B1W,GAAeJ,EAAAA,EAAAA,KACnB,SAACC,GAAD,OAAqBA,EAAMC,cAAcE,YAAzC,IAEImQ,GAAkBvQ,EAAAA,EAAAA,KACtB,SAACC,GAAD,OAAqBA,EAAMC,cAAcqQ,eAAzC,IAEI6N,GAAoBpe,EAAAA,EAAAA,KACxB,SAACC,GAAD,OAAqBA,EAAMC,cAAcke,iBAAzC,IAGF,GAAoD9d,EAAAA,EAAAA,WAAkB,GAAtE,eAAO+d,EAAP,KAA2BC,EAA3B,KACA,GAAoDhe,EAAAA,EAAAA,WAAkB,GAAtE,eAAOie,EAAP,KAA2BC,EAA3B,KACA,GAAwCle,EAAAA,EAAAA,WAAkB,GAA1D,eAAOme,EAAP,KAAqBC,EAArB,KACA,GAA0Cpe,EAAAA,EAAAA,WAAkB,GAA5D,eAAOqe,EAAP,KAAsBC,EAAtB,KACA,GAAgDte,EAAAA,EAAAA,WAAkB,GAAlE,eAAOue,EAAP,KAAyBC,EAAzB,KACA,GAAoCxe,EAAAA,EAAAA,UAA2B,MAA/D,eAAOqR,GAAP,KAAmBoN,GAAnB,KACA,IAA8Cze,EAAAA,EAAAA,UAAsB,IAApE,iBAAO0e,GAAP,MAAwBC,GAAxB,MACA,IAA0C3e,EAAAA,EAAAA,UAA2B,MAArE,iBAAO4e,GAAP,MAAsBC,GAAtB,MACA,IAAgC7e,EAAAA,EAAAA,UAAsB,IAAtD,iBAAO8e,GAAP,MAAiBC,GAAjB,MACA,IAAoC/e,EAAAA,EAAAA,WAAkB,GAAtD,iBAAO8P,GAAP,MAAmBkP,GAAnB,MACA,IAAsChf,EAAAA,EAAAA,WAAkB,GAAxD,iBAAOif,GAAP,MAAoBC,GAApB,MACA,IAAkDlf,EAAAA,EAAAA,UAAiB,GAAnE,iBAAOmf,GAAP,MAA0BC,GAA1B,MACA,IAAwCpf,EAAAA,EAAAA,WAAkB,GAA1D,iBAAOqf,GAAP,MAAqBC,GAArB,MAIM9H,KAFuBxG,EAAAA,EAAAA,IAAgB/R,IAAkB,IACtBuB,MAAM,KACfiX,OAAS,GAGrC8H,GAA4B,GAC5BlO,KACFkO,GAAkBlO,GAAWlG,KAAK3K,MAAM,OAG1C2I,EAAAA,EAAAA,YAAU,WACR,GAAIoN,GAAoBmI,IAAmBA,GAAgB9d,QAAU,EAAG,CACtE,IAAI4e,EACFd,GAAgBe,MAAK,SAACC,GAAD,OAAmBA,EAAGvC,SAAtB,KAAoCD,GAEnC,KAApBjN,IACFuP,EACEd,GAAgBe,MACd,SAACC,GAAD,OAAmBA,EAAGzQ,aAAegB,CAArC,KACGiN,IAGTuB,GAAce,EACf,CACF,GAAE,CAACvP,EAAiBsG,EAAkBmI,MAEvCvV,EAAAA,EAAAA,YAAU,WACJ2U,GAAuC,KAAlB7e,GACvBkQ,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,2BAGoDC,GAHpD,OAIMsX,EAAmB,sBAAwB,KAG9CjH,MAAK,SAACC,GACL,IAAMoQ,EAASnO,IAAIjC,EAAK,UAAW,IACnC,GAAIgH,EAAkB,CACpBoI,GAAmBgB,GACnBZ,GAAYY,GACZ,IAAMC,EAAeD,EAAOE,QAC1B,SAACC,EAAaC,GACZ,cAAIA,QAAJ,IAAIA,GAAAA,EAAWtH,KACNqH,EAAMC,EAAUtH,KAElBqH,CACR,GACD,GAGFV,GAAqBQ,EACtB,MACCnB,GAAckB,EAAO,IACrBZ,GAAY,IAGd1f,GAAS2gB,EAAAA,EAAAA,KAAqB,GAC/B,IACAxQ,OAAM,SAACC,GACNwQ,QAAQxQ,MAAM,+BAAgCA,GAC9CpQ,GAAS2gB,EAAAA,EAAAA,KAAqB,GAC/B,GAEN,GAAE,CACDlC,EACA9e,EACAC,EACAI,EACAkX,EACAtG,IAGF,IAAIiQ,GAAoB,GAEpB7O,IAAcA,GAAWiG,OAC3B4I,GAAU9N,OAAOC,KAAKhB,GAAWiG,OAGnC,IAoHM6I,IACJ,gBAAK3e,MAAO,CAAE4e,UAAW,SAAU3c,UAAW,IAA9C,UACE,SAAC4c,GAAA,EAAD,MAIJ,IAAKhP,GACH,OAAIyM,EACKqC,GAGF,KAGT,IAAMre,GACJyd,GAAgB3e,OAAS,EACrB2e,GAAgBA,GAAgB3e,OAAS,GACzCyQ,GAAWlG,KAEXmV,GAAkB,CACtBthB,EACAwY,GACA,CAACxY,EAAYqS,GAAWlG,MAAMhK,KAAK,MAE/Bof,IAAkBngB,EAAAA,EAAAA,GAAcpB,EAAY,CAChDqB,EAAAA,GAAAA,2BAEImgB,IAAapgB,EAAAA,EAAAA,GAAckgB,GAAiB,CAChDjgB,EAAAA,GAAAA,wBAGIogB,IAAqBrgB,EAAAA,EAAAA,GACzBkgB,GACA,CAACjgB,EAAAA,GAAAA,wBAAoCA,EAAAA,GAAAA,0BACrC,GAEIqgB,IAAatgB,EAAAA,EAAAA,GAAckgB,GAAiB,CAChDjgB,EAAAA,GAAAA,qBAEIsgB,IAAsBvgB,EAAAA,EAAAA,GAAckgB,GAAiB,CACzDjgB,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,wBAEIugB,IAAexgB,EAAAA,EAAAA,GAAckgB,GAAiB,CAClDjgB,EAAAA,GAAAA,gBAEIwgB,IAAYzgB,EAAAA,EAAAA,GAChB,CAACpB,EAAYwY,GAAa,CAACxY,EAAYqS,GAAWlG,MAAMhK,KAAK,MAC7D,CAACd,EAAAA,GAAAA,mBAGGygB,GAAqB,CACzB,CACE/M,OAAQ,YAlJW,SAACgN,GACtB,IAAMtF,GAAmBpa,EAAAA,EAAAA,IAAgB,GAAD,OACnCrC,EADmC,YACrB+hB,EAAO5V,KADc,aACN,IAAI1D,MAAOiU,UADL,YACkBC,KAAKC,WAG/D,GACEmF,EAAO5V,KAAKvK,OAAS,MACrBogB,EAAAA,EAAAA,MAActT,cAAcuT,SAAS,OAErC3B,IAAgB,OAJlB,CAQA,IAAMzD,GAAKC,EAAAA,GAAAA,IAAO,GAEZC,GAAeC,EAAAA,EAAAA,IACnBhd,EACAC,EACA8hB,EAAO9R,WACP5F,SAAS0X,EAAOtI,MAAQ,KACxB,KACAoD,GACA,SAACI,GACC5c,GACE6c,EAAAA,EAAAA,IAAe,CACbC,WAAYV,EACZQ,SAAUA,IAGf,IACD,WACE5c,GAAS+c,EAAAA,EAAAA,IAAeX,GACzB,IACD,SAACY,GACChd,GAASid,EAAAA,EAAAA,IAAW,CAAEH,WAAYV,EAAkBY,IAAAA,IACrD,IACD,WACEhd,GAASkd,EAAAA,EAAAA,IAAmBd,GAC7B,KAGHe,EAAAA,GAAAA,IAAyBX,EAAIE,GAC7B1c,GACEod,EAAAA,EAAAA,IAAa,CACXZ,GAAAA,EACA7c,WAAAA,EACA0d,MAAM,EACNP,WAAYV,EACZkB,WAAY,EACZC,OAAQmE,EAAO5V,KACf4B,KAAM,WACN8P,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACXzC,aAAc,KA3CjB,CA8CF,CA0FK4G,CAAe7P,GAChB,EACDnN,MAAO,WACPF,WAAYqN,GAAW8P,mBAAqBP,GAC5Crd,MAAM,SAAC,MAAD,IACNO,QAAS8c,GACL,wBACA7c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,yBAGR,CACE0T,OAAQ,WA5KViK,GAAsB,EA8KnB,EACD9Z,MAAO,QACPF,WAAYqN,GAAW8P,mBAAqBP,GAC5Crd,MAAM,SAAC,MAAD,IACNO,QAAS8c,GACL,mBACA7c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,sBAGR,CACE0T,OAAQ,WACNmL,IAAe,EAChB,EACDhb,MAAO,UACPF,WACIqN,GAAW8P,kBACqB,UAAlCC,EAAAA,EAAAA,IAAiB5J,MAChBoJ,GACHrd,MAAM,SAAC,MAAD,IACNO,QAAS8c,GACL,qBACA7c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,wBAGR,CACE0T,OAAQ,WACNuK,GAAiB,EAClB,EACDpa,MAAO,aACPF,UACG4Z,IACArH,KACClF,GAAW8P,mBACZZ,IACmB,KAApBtQ,EACF1M,MAAM,SAAC,MAAD,IACNO,QAASyc,GACL3C,EACE,wCACA,4EACF7Z,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,0BACD,+CAGR,CACE0T,OA5OuB,WACzBmK,GAAsB,EACvB,EA2OGha,MAAO,YACPF,UACGuS,KACClF,GAAW8P,mBACZV,IACmB,KAApBxQ,IACC2N,EACHra,MAAM,SAAC,MAAD,IACNO,QAAS2c,GACL7C,EACE,uCACA,iFACF7Z,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,yBAEF,2CAGR,CACE0T,OAAQ,WACNqK,GAAgB,EACjB,EACDla,MAAO,OACPF,WACIqN,GAAW8P,kBAAwC,KAApBlR,IAA2BuQ,GAC9Djd,MAAM,SAAC,MAAD,IACNO,QAAS0c,GACL,6BACAzc,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAAA,sBACAA,EAAAA,GAAAA,uBAEF,4BAGR,CACE0T,OAAQ,WACNyK,GAAoB,EACrB,EACDta,MAAO,UACPF,UACGuS,KACClF,GAAW8P,kBACO,KAApBlR,IACCyQ,GACHnd,MAAM,SAAC,KAAD,IACNO,QAAS4c,GACL,qBACA3c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,oBACD,sBAGR,CACE0T,OAAQ,WACN1U,GACEuC,EAAAA,EAAAA,IAAuB,CACrBC,QAAS/B,EACTgC,WAAYA,KAGjB,EACDoC,MAAOpE,EAAe,uBAAyB,0BAC/CyD,MAAM,SAAC,MAAD,IACNS,UACGuS,KACClF,GAAWpC,YAAwC,SAA1BoC,GAAWpC,cACrC0R,GACH7c,QAAS6c,GACLtP,GAAWpC,YAAwC,SAA1BoC,GAAWpC,WAClC,iCACA,IACFlL,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,uBAEF,yCAgBV,OACE,UAAC,EAAAiB,SAAD,WACGyc,GAAsB1M,KACrB,SAACgQ,EAAA,QAAD,CACEhc,KAAM0Y,EACNpR,qBApUgB,WACtBkS,GAAiB,MACjBb,GAAsB,EACvB,EAkUOhf,WAAYA,EACZsiB,WAAY1C,IAAiBvN,KAGhC4M,GAAsB5M,KACrB,SAAC,GAAD,CACEhM,KAAM4Y,EACNtR,qBAvVoB,SAAC4U,GAC3BrD,GAAsB,GAClBqD,GACFliB,GAAS2gB,EAAAA,EAAAA,KAAqB,GAEjC,EAmVOle,WAAY0V,GACZ5K,WAAYyE,GACZrS,WAAYA,IAGf8Q,KACC,SAAC,GAAD,CACEA,WAAYA,GACZC,eAAgB/Q,EAChB+P,eAAgB9P,EAChB4Q,2BAnRiB,SAAC2R,GACxBxC,IAAc,GAEVwC,GAAsC,KAApBvR,EACpB4N,GAAa,IAEbxe,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GAASqiB,EAAAA,EAAAA,IAAmB,KAC5BriB,GAAS2gB,EAAAA,EAAAA,KAAqB,IAEjC,EA0QOhQ,WAAYuG,GAAoBvG,EAChCC,gBAAiBA,IAGpBoO,GAAiBhN,KAChB,SAAC,GAAD,CACEhM,KAAMgZ,EACN1R,qBAjQoB,SAACgV,GAC3BrD,GAAiB,GACbqD,GACFtiB,GAAS2gB,EAAAA,EAAAA,KAAqB,GAEjC,EA6POle,WAAYuP,GAAWlG,KACvBnM,WAAYA,EACZqS,WAAYA,KAGf4N,IAAe5N,KACd,SAACuQ,GAAA,QAAD,CACEvc,KAAM4Z,GACNjgB,WAAYA,EACZ+hB,OAAQ,CACN5V,KAAMkG,GAAWlG,KACjB8D,WAAYoC,GAAWpC,YAAc,OACrCwJ,KAAMpP,SAASgI,GAAWoH,MAAQ,KAClCoJ,aAAc,GACdzE,cAAe,IAAI3V,KAAK4J,GAAW+L,gBAErC0E,eAAgB,WACd5C,IAAe,EAChB,IAGJf,GAAgB9M,KACf,SAAC0Q,GAAD,CACE5f,UAAWgc,EACXnf,WAAYA,EACZqS,WAAYA,GACZiF,iBA1SiB,SAAC0L,GACxB5D,GAAgB,GACZ4D,GACF3iB,GAAS2gB,EAAAA,EAAAA,KAAqB,GAEjC,IAwSIzB,GAAoBlN,KACnB,SAAC,GAAD,CACE6H,YAAaqF,EACbnF,WAAYpa,EACZma,YAAa9H,GAAWlG,KACxB8N,4BA3SkB,SAAC+I,GACzBxD,GAAoB,GAChBwD,GACF3iB,GAAS2gB,EAAAA,EAAAA,KAAqB,GAEjC,IAySIX,IAAgBhO,KACf,SAAC,GAAD,CACEhM,KAAMga,GACNjE,WAnYc,WACpBkE,IAAgB,EACjB,EAkYO9H,YAAaA,GACbxY,WAAYA,EACZC,cAAeA,EACfoS,WAAYA,KAIfyM,GACC,SAAC,EAAAxc,SAAD,UAAW6e,MAEX,UAAC,EAAA7e,SAAD,YACE,SAAC,GAAD,CACEuJ,OACE,iBAAKtJ,UAAWxC,EAAQue,mBAAxB,UACG/H,GAAoBzT,IAAY,IACjC,iBAAMP,UAAWxC,EAAQwe,oBAAzB,SACGzb,QAIP6R,MAAOmN,MAET,SAACjd,EAAA,EAAD,CACEC,QACE+c,GACI,IACA9c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,kBACD,sBANV,UAUE,SAACiC,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJG,GAAI,CAAEwJ,eAAgB,SAAUF,QAAS,QAH3C,UAKE,SAAC6L,EAAA,EAAD,CACEE,SAAU,CACRhZ,EACAwY,GACA,CAACxY,EAAYqS,GAAWlG,MAAMhK,KAAK,MAErC4W,OAAQ,CAAC1X,EAAAA,GAAAA,kBACTgY,WAAY,CAAErU,UAAU,GAP1B,UASE,SAAC,IAAD,CACEV,GAAI,uBACJC,MAAM,SAAC,MAAD,IACN0e,aAAc,QACdC,WAAS,EACTxe,QAAS,YACT/B,QAAS,WACPqd,IAAc,EACf,EACDhb,SACsB,KAApBiM,GAA0BoB,GAAW8P,iBAEvC3f,MAAO,CACLwB,MAAO,oBACPlE,OAAQ,SAEVoF,MAAK,gBAA+B,KAApB+L,EAAyB,WAAa,aAK9D,UAAC3N,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQye,iBAAtC,WACE,2CACA,SAAC,MAAD,QAEF,UAAC5K,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,uCACA,mBACA,gBAAK3gB,MAAO,CAAE4gB,aAAc,cAA5B,SAA6CtgB,QAE1B,KAApBmO,IACC,UAAC2C,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,6CACA,kBACClS,MAGL,UAAC2C,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,uCACA,mBACCE,EAAAA,EAAAA,IAAUhR,GAAWoH,MAAQ,QAE/BpH,GAAWpC,YACgB,SAA1BoC,GAAWpC,YACS,KAApBgB,IACE,UAAC2C,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,2CACA,kBACCrD,GAASle,OAHZ,WAGgD,IAApBke,GAASle,OAAe,IAAM,GAH1D,IAG+D,KAC5D0hB,EAAAA,EAAAA,IAAanD,OAGC,KAApBlP,IACC,UAAC2C,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,gDACA,kBA1LoB,SAACI,GAC/B,IAAMC,EAAc,IAAI/a,KAClBgb,EAAe,IAAIhb,KAAK8a,GAExBG,EAAUF,EAAY9G,UAAY+G,EAAa/G,UAE/CiH,GAAaC,EAAAA,EAAAA,IAAYF,EAAS,MAExC,MAA6B,KAAtBC,EAAW7J,OAAX,UAA8B6J,EAA9B,QAAiD,UACzD,CAkLYE,CAAwBxR,GAAW+L,mBAGxC,UAACxK,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,uCACA,kBACC9Q,GAAWyR,MAAQ,UAEtB,UAAClQ,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,WACE,uCACA,kBACoB,IAAnBjC,GAAQtf,OACL,MACAsf,GAAQpf,KAAI,SAACoX,EAAQlX,GACnB,OACE,4BACGkX,EADH,IACY1G,IAAIH,GAAD,eAAqB6G,GAAU,IAC3ClX,EAAQkf,GAAQtf,OAAS,EAAI,KAAO,KAFvC,iBAAqBI,EAAMe,YAK9B,QAEP,SAAC6Q,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,UACE,SAACrK,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,0BACT2X,SAAUhZ,EAFZ,UAIE,UAAC,EAAAsC,SAAD,YACE,6CACA,kBACC+P,GAAWgM,kBAAoB,KAAO,cAI7C,SAACzK,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,UACE,SAACrK,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,yBACT2X,SAAUhZ,EAFZ,UAIE,UAAC,EAAAsC,SAAD,YACE,mDACA,mBACA,iBAAMC,UAAWxC,EAAQ2S,gBAAzB,UACGL,GAAWpC,YAAcoC,GAAWpC,YACnC,SAAC,EAAA3N,SAAD,UACG+P,GAAW5D,eACR4D,GAAW5D,eAAeC,cAC1B,oBAahB,UAACpL,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQye,iBAAtC,WACE,wCACA,SAAC,MAAD,QAEF,SAAC5K,EAAA,EAAD,CAAKrR,UAAWxC,EAAQojB,gBAAxB,SACG9Q,IACC,SAAC,GAAD,CACErS,WAAYA,EACZC,cAAeA,EACfoS,WAAYA,GACZS,QAAM,IAEN,YAMf,I,uBCn0BYiR,GAAoB,SAAChC,GAChC,OAAIA,EAAO5V,KAAK8F,SAAS,KAChB,IAEF,SAAC,KAAD,UAAsB8P,EAAO3D,eACrC,EAEY4F,GAAmB,SAACjC,GAC/B,OAAIA,EAAO5V,KAAK8F,SAAS,OAAS8P,EAAOtI,KAChC,KAEF4J,EAAAA,EAAAA,IAAUY,OAAOlC,EAAOtI,MAChC,EAQYyK,GAAkB,CAC7B,CACEhf,MAAO,OACPif,WAAY,OACZC,eAAgB7N,GAChB8N,YAAY,GAEd,CACEnf,MAAO,gBACPif,WAAY,gBACZC,eAAgBL,GAChBO,kBAAkB,EAClBD,YAAY,GAEd,CACEnf,MAAO,OACPif,WAAY,OACZC,eAAgBJ,GAChBM,kBAAkB,EAClBtgB,MAAO,IACPugB,iBAAkB,SAClBF,YAAY,IAIHG,GAAoB,CAC/B,CACEtf,MAAO,OACPif,WAAY,OACZC,eAAgB7N,GAChB8N,YAAY,GAEd,CACEnf,MAAO,cACPif,WAAY,gBACZC,eAAgBL,GAChBO,kBAAkB,EAClBD,YAAY,GAEd,CACEnf,MAAO,OACPif,WAAY,OACZC,eAAgBJ,GAChBM,kBAAkB,EAClBtgB,MAAO,IACPugB,iBAAkB,SAClBF,YAAY,GAEd,CACEnf,MAAO,UACPif,WAAY,cACZC,eAzD6B,SAACzjB,GAChC,OAAOA,EAAQ,MAAQ,IACxB,EAwDGqD,MAAO,GACPugB,iBAAkB,W,wBCOtB,IAAe9kB,EAAAA,EAAAA,IA/DA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,UACR8kB,EAAAA,IAFQ,GA+Df,EA1D2B,SAAC,GAOA,IAN1B1kB,EAMyB,EANzBA,QACA2kB,EAKyB,EALzBA,UACA1kB,EAIyB,EAJzBA,WACA2kB,EAGyB,EAHzBA,WACAC,EAEyB,EAFzBA,YACAtN,EACyB,EADzBA,iBAEMjX,GAAWC,EAAAA,EAAAA,MACjB,GAA4CU,EAAAA,EAAAA,WAAkB,GAA9D,eAAO6jB,EAAP,KAAuBC,EAAvB,KAsBA,OACE,SAACrT,GAAA,EAAD,CACE5F,MAAK,uBACL6F,YAAa,UACbC,OAAQiT,EACR/S,UAAWgT,EACXjT,WAAW,SAACmT,GAAA,EAAD,IACXjT,UA3BmB,WACrBgT,GAAkB,GAElB3U,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,oCAG4DqC,EAAAA,EAAAA,IACtDsiB,GAJN,uBAKoBD,IAEjBpU,MAAK,SAACC,GACLuU,GAAkB,GAClBxN,GAAiB,EAClB,IACA9G,OAAM,SAACC,GACNpQ,GAAS+Q,EAAAA,EAAAA,IAAqBX,IAC9BqU,GAAkB,EACnB,GACJ,EAUGE,mBAAoB,CAClBtgB,QAAS,YACTM,SAAU6f,GAEZxhB,QAAS,WACPiU,GAAiB,EAClB,EACDpF,qBACE,UAACC,GAAA,EAAD,CAAmB7N,GAAG,2BAAtB,+CACmC,mBACjC,uBAAIqgB,IAFN,KAEsB,kBAFtB,qBAGE,mBACA,cAAGpiB,UAAWxC,EAAQklB,SAAtB,SAAiCP,IAJnC,QASP,IC3CD,GArC4B,SAAC,GAAyC,IAChEQ,EAAU,OACV3J,EAAU,GAEd,OAJmE,EAAtCxN,MAK3B,IAAK,OACHmX,EAAU,UACV3J,EAAU,eACV,MACF,IAAK,UACH2J,EAAU,UACV3J,EAAU,UACV,MACF,QACE2J,EAAU,UACV3J,EAAU,kBAGd,OACE,iBACE/Y,MAAO,CACLqB,gBAAiBqhB,EACjB5Q,QAAS,QACTrH,QAAS,eACTrI,MAAO,OACP2P,WAAY,OACZtL,SAAU,GACVlF,aAAc,EACdkB,WAAY,SACZnF,OAAQ,UAVZ,SAaGyb,GAGN,E,YCwRD,IAAe9b,EAAAA,EAAAA,IA5RA,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACXwlB,oBAAqB,CACnBnc,aAAc,oBACdsL,QAAS,SACTxU,OAAQ,oBACR2C,OAAQ,UACR,YAAa,CACXmC,MAAO,WAET,4BAA6B,CAC3B0P,QAAS,UACTxU,OAAQ,IAGZslB,kBAAmB,CACjBtlB,OAAQ,oBACR,sBAAuB,CACrB+D,gBAAiB,UACjB,UAAW,CACTwhB,kBAAmB,YAGvB,4BAA6B,CAC3BvlB,OAAQ,EACR,sBAAuB,CACrB+D,gBAAiB,cACjB,UAAW,CACTwhB,kBAAmB,cAK3BC,iBAAkB,CAChBrc,SAAU,GACVsL,WAAY,OACZtH,QAAS,OACTC,WAAY,SACZ,iBAAkB,CAChBlJ,MAAO,GACPC,OAAQ,GACR0D,SAAU,GACVsN,UAAW,GACX/Q,YAAa,IAEf,4BAA6B,CAC3B+E,SAAU,GACV,iBAAkB,CAChBgE,QAAS,UAIfsY,gBAAiB,CACfnE,UAAW,QACX,WAAY,CACV1Z,WAAY,UAEd,4BAA6B,CAC3B,WAAY,CACVA,WAAY,SAIlBgd,UAAW,CACTzb,SAAU,OACVnJ,OAAQ,QACRmF,WAAY,SACZmQ,aAAc,WACdoQ,SAAU,MACVrQ,SAAU,UAEZsQ,YAAa,CACXvhB,YAAa,OACb+E,SAAU,GACVrE,MAAO,UACP,4BAA6B,CAC3BwQ,aAAc,WACdoQ,SAAU,MACVrQ,SAAU,SACVlQ,WAAY,WAGhBygB,QAAS,CACPle,SAAU,WACV,YAAa,CACXme,QAAS,MACT1Y,QAAS,QACTzF,SAAU,WACVxD,MAAO,MACPC,OAAQ,mBACRJ,gBAAiB,UACjB+hB,KAAM,QAER,4BAA6B,CAC3B,YAAa,CACX3Y,QAAS,UAIf4Y,gBAAiB,CACf,4BAA6B,CAC3B5Y,QAAS,OACT6Y,cAAe,WAGnBC,YAAa,CACX,4BAA6B,CAC3B9Y,QAAS,UA3GF,GA4Rf,EA5KwB,SAAC,GAgBA,IAfvBlN,EAesB,EAftBA,QACAiV,EAcsB,EAdtBA,SACAgR,EAasB,EAbtBA,YACAC,EAYsB,EAZtBA,WACAC,EAWsB,EAXtBA,UACAC,EAUsB,EAVtBA,UACAC,EASsB,EATtBA,QACAC,EAQsB,EARtBA,QACAC,EAOsB,EAPtBA,WACAC,EAMsB,EANtBA,UACAC,EAKsB,EALtBA,UACAC,EAIsB,EAJtBA,YACAzkB,EAGsB,EAHtBA,MACA0kB,EAEsB,EAFtBA,IACAlkB,EACsB,EADtBA,MAEMmkB,EAAiBX,EAAY7D,iBAE7ByE,EAAqB,CACzB,CACEriB,MAAM,SAAC,MAAD,IACNwQ,OAAQyR,EACR1hB,QAAS,WAEX,CACEP,MAAM,SAAC,MAAD,IACNwQ,OAAQuR,EACRxhB,QAAS,yBAEX,CACEP,MAAM,SAAC,MAAD,IACNwQ,OAAQsR,EACRvhB,QAAS,sBAEX,CACEP,MAAM,SAAC,MAAD,IACNwQ,OAAQwR,EACRzhB,QAAS,yBAIT+hB,EAA8C,KAUlD,OARIb,EAAY7D,iBACd0E,EAAO,UACEb,EAAY7H,UACrB0I,EAAO,UAC6B,SAA3Bb,EAAY/V,aACrB4W,EAAO,SAIP,SAACvjB,EAAA,GAAD,CACEiI,WAAS,EACTyB,KAAM,EACNzK,UAAWxC,EAAQ2lB,QACnB/iB,QAAS,WACP8jB,EAAYT,EACb,EAEDxjB,MAAOA,EART,UAUE,SAACc,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,UAAS,UAAKxC,EAAQqlB,kBAAb,YACPa,EAAa,WAAa,IAJ9B,UAOE,UAAC3iB,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,UAAS,UAAKxC,EAAQolB,oBAAb,YACPa,EAAY7D,iBAAmB,UAAY,IAJ/C,WAOE,SAAC7e,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAI2J,eAAgB,gBAAnC,UACE,UAAC7J,EAAA,GAAD,CAAMiI,WAAS,EAAf,WACE,UAACjI,EAAA,GAAD,CAAMC,MAAI,EAACC,IAAE,EAACsjB,GAAI,EAAGvkB,UAAWxC,EAAQulB,iBAAxC,UACGY,IACC,SAACa,GAAA,EAAD,CACE7a,QAASia,EACT7hB,GAAE,iBAAY0hB,EAAY/V,YAC1B/K,MAAO,GACPiH,KAAI,iBAAY6Z,EAAY/V,YAC5B7D,SAAU,SAACC,GACTA,EAAE2a,kBACF3a,EAAEoD,iBACF2W,EAAQJ,EAAY/V,YAAc,GACnC,EACD/H,MAAO8d,EAAY/V,YAAc,GACjCjL,SAAUghB,EAAY7D,iBACtB8E,uBAAwB,CACtBvZ,YAAa,EACbzJ,OAAQ,GACRD,MAAO,IAETkjB,aAAW,IAGd3Q,GAAoBvB,GAAU,GAtBjC,KAsB0ChT,EAAMe,YAC9C,iBAAMR,UAAWxC,EAAQgmB,YAAzB,SACGc,IAAQ,SAAC,GAAD,CAAqB9Y,KAAM8Y,UAGxC,SAACvjB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIsjB,GAAI,EAAGvkB,UAAWxC,EAAQwlB,gBAA7C,SACGqB,EAAmB9kB,KAAI,SAACqlB,EAAQnlB,GAC/B,OACE,SAAC4J,GAAA,EAAD,CACEC,MAAOsb,EAAOriB,QADhB,UAME,SAACpB,EAAA,EAAD,CACE+V,KAAM,QACNnV,GAAE,yBACA6iB,EAAOriB,QADP,YAEE9C,EAAMe,YACVR,UAAS,UAAKxC,EAAQoc,QAAb,YACPwK,EAAiB5mB,EAAQqnB,eAAiB,IAE5CpiB,SAAU2hB,EACVhkB,QAAS,SAAC0J,GACRA,EAAE2a,kBACGL,EAGHta,EAAEoD,iBAFF0X,EAAOpS,OAAOiR,EAIjB,EACDriB,GAAI,CACFE,gBAAiB,UACjBE,aAAc,OACdC,MAAO,OACPC,OAAQ,OACRqQ,QAAS,MACT,cAAe,CACbtQ,MAAO,OACPC,OAAQ,SAzBd,SA6BGkjB,EAAO5iB,QAnCZ,yBAGI4iB,EAAOriB,QAHX,YAIM9C,EAAMe,YAmCf,YAIP,SAACO,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2kB,UAAtC,SAC8B,SAA3BsB,EAAY/V,WAAwB+V,EAAY/V,WAAa,OAEhE,UAAC3M,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ8lB,gBAAtC,WACE,kBAAMtjB,UAAWxC,EAAQ0lB,YAAzB,WACE,+CAAgC,KAChC,SAAC,KAAD,UACGO,EAAY5H,oBAGjB,kBAAM7b,UAAWxC,EAAQ0lB,YAAzB,WACE,sCADF,KAC0BpC,EAAAA,EAAAA,IAAU2C,EAAYvM,MAAQ,iBAvGzDiN,EA8GV,I,YChOD,GA3EiC,SAAC,GAKH,IAJ7B7V,EAI4B,EAJ5BA,2BACAC,EAG4B,EAH5BA,WACAC,EAE4B,EAF5BA,eACAhB,EAC4B,EAD5BA,eAEM1P,GAAWC,EAAAA,EAAAA,MACjB,GAA0CU,EAAAA,EAAAA,WAAkB,GAA5D,eAAOqQ,EAAP,KAAsBgW,EAAtB,KACA,GAAsCrmB,EAAAA,EAAAA,UAAiB,IAAvD,eAAOsmB,EAAP,KAAoBC,EAApB,KAyBA,IAvBApd,EAAAA,EAAAA,YAAU,WACJkH,GACFlB,EAAAA,EAAAA,OAEI,SAFJ,0BAGuBY,EAHvB,yBAGsDhB,EAHtD,+BAKGO,MAAK,WACJO,GAA2B,EAC5B,IACAL,OAAM,SAACC,GACNpQ,GAAS+Q,EAAAA,EAAAA,IAAqBX,IAC9B4W,GAAiB,EAClB,GAEN,GAAE,CACDhW,EACAR,EACAxQ,EACA0P,EACAgB,KAGGhB,EACH,OAAO,KAMT,OACE,SAAC0B,GAAA,EAAD,CACE5F,MAAK,8BACL6F,YAAa,SACbC,OAAQb,EACRc,WAAW,SAAC,MAAD,IACXC,UAAWR,EACXS,UAXoB,WACtBuV,GAAiB,EAClB,EAUGhkB,QAAS,kBAAMwN,GAA2B,EAAjC,EACTmU,mBAAoB,CAClBhgB,SAA0B,iBAAhBsiB,GAAkCjW,GAE9Ca,qBACE,UAACC,GAAA,EAAD,+EACoE,KAClE,wBAAIH,EAAAA,EAAAA,IAAgBjC,KAFtB,MAE4C,mBAC1C,kBAHF,4BAI0B,wCAJ1B,gBAKE,SAACzM,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACoW,GAAA,EAAD,CACEtV,GAAG,eACH6H,KAAK,gBACLC,SAAU,SAAClG,GACTqhB,EAAerhB,EAAMoG,OAAOpE,MAC7B,EACDhD,MAAM,GACNgD,MAAOof,UAOpB,ECAD,GA1EqB,SAAC,GAMe,IALnCzW,EAKkC,EALlCA,2BACAC,EAIkC,EAJlCA,WACAC,EAGkC,EAHlCA,eACAyW,EAEkC,EAFlCA,iBACAzX,EACkC,EADlCA,eAEM1P,GAAWC,EAAAA,EAAAA,MACjB,GAA0CU,EAAAA,EAAAA,WAAkB,GAA5D,eAAOqQ,EAAP,KAAsBgW,EAAtB,KA2CA,OApCAld,EAAAA,EAAAA,YAAU,WACR,GAAIkH,EAAe,CACjB,IAAMoW,EAAyBD,EAAiB1lB,KAAI,SAAC4iB,GACnD,MAAO,CACLhjB,KAAMqO,EACN2U,UAAWA,EACX3S,WAAW,EAEd,IAEG0V,EAAuB7lB,OAAS,GAClCuO,EAAAA,EAAAA,OAEI,OAFJ,0BAGuBY,EAHvB,sCAII0W,GAEDnX,MAAK,WACJ+W,GAAiB,GACjBxW,GAA2B,EAC5B,IACAL,OAAM,SAACC,GACNpQ,GAAS+Q,EAAAA,EAAAA,IAAqBX,IAC9B4W,GAAiB,EAClB,GAEN,CACF,GAAE,CACDhW,EACAR,EACAE,EACAhB,EACAyX,EACAnnB,IAGGmnB,GAKH,SAAC/V,GAAA,EAAD,CACE5F,MAAK,2BACL6F,YAAa,SACbC,OAAQb,EACRc,WAAW,SAAC,MAAD,IACXC,UAAWR,EACXS,UAnDoB,WACtBuV,GAAiB,EAClB,EAkDGhkB,QArDY,kBAAMwN,GAA2B,EAAjC,EAsDZqB,qBACE,UAACC,GAAA,EAAD,2DACgDqV,EAAiB5lB,OAAQ,IADzE,iBAEe,4BAASmO,IAFxB,SAbG,IAoBV,E,WCyCKmO,GAAuB,CAC3BC,WAAW,EACXC,cAAe,GACfC,kBAAmB,GACnBlS,KAAM,GACNsC,eAAgB,GAChBE,qBAAsB,GACtB8K,KAAM,IACNnB,KAAM,CAAC,EACPrI,WAAY,MAged,IAAexQ,EAAAA,EAAAA,IAziBA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,wEACX+nB,kBAAmB,CACjBpT,QAAS,GACT,4BAA6B,CAC3BW,UAAW,MAGf0S,eAAgB,CACd3e,aAAc,GAEhB4e,qBAAsB,CACpBC,SAAU,EACV5jB,OAAQ,qBACRkR,SAAU,OACV,4BAA6B,CAC3BlR,OAAQ,MAGZ6jB,qBAAsB,CACpBtgB,SAAU,WACV,YAAa,CACXme,QAAS,MACT1Y,QAAS,QACTzF,SAAU,WACVxD,MAAO,MACPH,gBAAiB,UACjB+hB,KAAM,OACN3hB,OAAQ,OACR8jB,OAAQ,GAEV,4BAA6B,CAC3B,YAAa,CACX9a,QAAS,UAIf+a,YAAa,CACXpjB,MAAO,UACP2P,WAAY,OACZtP,WAAY,SACZf,YAAa,GACb+E,SAAU,GACV,4BAA6B,CAC3BgE,QAAS,UAGVgb,EAAAA,IACAxJ,EAAAA,IACAC,EAAAA,IACAwJ,EAAAA,IACA1a,EAAAA,IACAmR,EAAAA,IACA/e,EAAAA,IACAuoB,EAAAA,KACAjM,EAAAA,EAAAA,IAAmBxc,EAAMyc,QAAQ,KAvDzB,GAyiBf,EA7d0B,SAAC,GAIK,IAH9Bpc,EAG6B,EAH7BA,QACAE,EAE6B,EAF7BA,cACAD,EAC6B,EAD7BA,WAEMK,GAAWC,EAAAA,EAAAA,MAEX8nB,GAAiB1nB,EAAAA,EAAAA,KACrB,SAACC,GAAD,OAAqBA,EAAMC,cAAcwnB,cAAzC,IAEIC,GAAkB3nB,EAAAA,EAAAA,KACtB,SAACC,GAAD,OAAqBA,EAAMC,cAAcynB,eAAzC,IAEIpX,GAAkBvQ,EAAAA,EAAAA,KACtB,SAACC,GAAD,OAAqBA,EAAMC,cAAcqQ,eAAzC,IAGIsG,GAAmB7W,EAAAA,EAAAA,IAAY8W,EAAAA,IACrC,GAAoDxW,EAAAA,EAAAA,WAAkB,GAAtE,eAAO+d,EAAP,KAA2BC,EAA3B,KACA,GAAoChe,EAAAA,EAAAA,UAA2B,MAA/D,eAAOqR,EAAP,KAAmBoN,EAAnB,KACA,GAA0Cze,EAAAA,EAAAA,UAA2B,MAArE,eAAO4e,EAAP,KAAsBC,EAAtB,KACA,GAAgC7e,EAAAA,EAAAA,UAAsB,IAAtD,eAAO8e,EAAP,KAAiBC,EAAjB,KACA,GAAoD/e,EAAAA,EAAAA,WAAkB,GAAtE,eAAOsnB,EAAP,KAA2BC,EAA3B,KACA,GAA4CvnB,EAAAA,EAAAA,UAAiB,IAA7D,eAAOwnB,EAAP,KAAuBC,EAAvB,KACA,GAAkCznB,EAAAA,EAAAA,UAAiB,QAAnD,eAAO0nB,GAAP,KAAkBC,GAAlB,KACA,IAAsC3nB,EAAAA,EAAAA,WAAkB,GAAxD,iBAAOif,GAAP,MAAoBC,GAApB,MACA,IACElf,EAAAA,EAAAA,WAAkB,GADpB,iBAAO4nB,GAAP,MAA6BC,GAA7B,MAEA,IAA0C7nB,EAAAA,EAAAA,WAAkB,GAA5D,iBAAO8nB,GAAP,MAAsBC,GAAtB,MACA,IAA0C/nB,EAAAA,EAAAA,UAAmB,IAA7D,iBAAOgoB,GAAP,MAAsBC,GAAtB,MACA,IAAgDjoB,EAAAA,EAAAA,WAAkB,GAAlE,iBAAOkoB,GAAP,MAAyBC,GAAzB,MAGI5I,GAA4B,GAC5BlO,IACFkO,GAAkBlO,EAAWlG,KAAK3K,MAAM,OAG1C2I,EAAAA,EAAAA,YAAU,WACHke,GAAoBhW,GACvBhS,GAASoiB,EAAAA,EAAAA,KAAmB,GAE/B,GAAE,CAAC4F,EAAiBhW,EAAYhS,KAEjC8J,EAAAA,EAAAA,YAAU,WACJke,GAAqC,KAAlBpoB,GACrBkQ,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,2BAGoDC,GAHpD,OAIMsX,EAAmB,sBAAwB,KAG9CjH,MAAK,SAACC,GACL,IAAMoQ,EAASnO,IAAIjC,EAAK,UAAW,IAE7B6Y,GAAuBpX,EAAAA,EAAAA,IAAgB/R,GAGvCopB,EAAmB1I,EAAOlf,QAC9B,SAAC8B,GAAD,OAAqBA,EAAK4I,OAASid,CAAnC,IAGE7R,GACFkI,EACE4J,EAAiB5I,MAAK,SAACC,GAAD,OAAmBA,EAAGvC,SAAtB,KACpBD,IAEJ6B,EAAYsJ,KAEZ5J,EAAc4J,EAAiB,IAC/BtJ,EAAY,KAGd1f,GAASoiB,EAAAA,EAAAA,KAAmB,GAC7B,IACAjS,OAAM,SAACW,GACN9Q,GAAS+Q,EAAAA,EAAAA,IAAqBD,IAC9B9Q,GAASoiB,EAAAA,EAAAA,KAAmB,GAC7B,GAEN,GAAE,CAAC4F,EAAiBroB,EAAYC,EAAeI,EAAUkX,IAE1D,IA6DM+R,GAAc,SAAC/lB,GACnBsc,EAAiBtc,GA7DjByb,GAAsB,EA+DvB,EAEKuK,GAAgB,SAAChmB,GACrBsc,EAAiBtc,GACjB2c,IAAe,EAChB,EAEKsJ,GAAgB,SAACjmB,GACrBklB,EAAkBllB,EAAK0M,YAAc,IACrCsY,GAAsB,EACvB,EAEKkB,GAAiB,SAAClmB,IAlED,SAACwe,GACtB,IAAMtF,GAAmBpa,EAAAA,EAAAA,IAAgB,GAAD,OACnCrC,EADmC,YACrB+hB,EAAO5V,KADc,aACN,IAAI1D,MAAOiU,UADL,YACkBC,KAAKC,WAGzDC,GAAKC,EAAAA,GAAAA,IAAO,GAEZC,GAAeC,EAAAA,EAAAA,IACnBhd,EACAC,EACA8hB,EAAO9R,WACP5F,SAAS0X,EAAOtI,MAAQ,KACxB,KACAoD,GACA,SAACI,GACC5c,GACE6c,EAAAA,EAAAA,IAAe,CACbC,WAAYV,EACZQ,SAAUA,IAGf,IACD,WACE5c,GAAS+c,EAAAA,EAAAA,IAAeX,GACzB,IACD,SAACY,GACChd,GAASid,EAAAA,EAAAA,IAAW,CAAEH,WAAYV,EAAkBY,IAAAA,IACrD,IACD,WACEhd,GAASkd,EAAAA,EAAAA,IAAmBd,GAC7B,KAGHe,EAAAA,GAAAA,IAAyBX,EAAIE,GAC7B1c,GACEod,EAAAA,EAAAA,IAAa,CACXZ,GAAAA,EACA7c,WAAAA,EACA0d,MAAM,EACNP,WAAYV,EACZkB,WAAY,EACZC,OAAQmE,EAAO5V,KACf4B,KAAM,WACN8P,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACXzC,aAAc,KAGnB,CAkBC4G,CAAe3e,EAChB,EAEKmmB,GAAgB,SAACnmB,GACrBlD,GAASqiB,EAAAA,EAAAA,IAAmBnf,EAAK0M,YAAc,IAChD,EAEK0Z,GAAkB7J,EAASre,QAAO,SAACmoB,GACvC,QAAIA,EAAQ3Z,YACH2Z,EAAQ3Z,WAAWgS,SAASmG,EAGtC,IAiCKyB,GAAa/J,EAASe,QAAO,SAACC,EAAaC,GAC/C,OAAIA,EAAUtH,KACLqH,EAAMzW,SAAS0W,EAAUtH,MAE3BqH,CACR,GAAE,GAEH6I,GAAgBG,MAAK,SAACC,EAAGC,GACvB,GACO,SADCtB,GAEJ,OAAIqB,EAAEtQ,MAAQuQ,EAAEvQ,KACVsQ,EAAEtQ,KAAOuQ,EAAEvQ,MACL,EAENsQ,EAAEtQ,KAAOuQ,EAAEvQ,KACN,EAEF,EAEF,EAEP,IAAMwQ,EAAQ,IAAIxhB,KAAKshB,EAAE3L,eAAe1B,UAClCwN,EAAQ,IAAIzhB,KAAKuhB,EAAE5L,eAAe1B,UAExC,OAAIuN,EAAQC,EACH,EAELD,EAAQC,GACF,EAEH,CAEZ,IAED,IAAMC,GAAiB,SAAClZ,GACtB,GAAI+X,GAAc/G,SAAShR,GAA3B,CACE,IAAMmZ,EAAgBpB,GAAcvnB,QAClC,SAAC+R,GAAD,OAAaA,IAAYvC,CAAzB,IAGFgY,GAAiBmB,EAGlB,KARD,CAUA,IAAMC,GAAU,OAAOrB,IACvBqB,EAAWC,KAAKrZ,GAEhBgY,GAAiBoB,EALhB,CAMF,EAgCD,OACE,UAAC,EAAA/nB,SAAD,WACGyc,GAAsB1M,IACrB,SAACgQ,EAAA,QAAD,CACEhc,KAAM0Y,EACNpR,qBA5MgB,WACtBkS,EAAiB,MACjBb,GAAsB,GACtBkB,IAAe,EAChB,EAyMOlgB,WAAYA,EACZsiB,WAAY1C,GAAiBvN,IAGhCiW,GAAsBjW,IACrB,SAAC,GAAD,CACEuS,YAAa0D,EACbtoB,WAAYA,EACZ0kB,UAAW8D,EACX7D,WAAYtS,EAAWlG,KACvBmL,iBAhIkB,SAAC0L,GACzBuF,GAAsB,GACtBE,EAAkB,IAEdzF,IACF3iB,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GAAS2gB,EAAAA,EAAAA,KAAqB,IAEjC,IA2HIf,IAAe5N,IACd,SAACuQ,GAAA,QAAD,CACEvc,KAAM4Z,GACNjgB,WAAYA,EACZ+hB,OAAQ,CACN5V,KAAMkG,EAAWlG,KACjB8D,WACE2P,GAAiBA,EAAc3P,WAC3B2P,EAAc3P,WACd,OACNwJ,KAAMpP,SACJuV,GAAiBA,EAAcnG,KAAOmG,EAAcnG,KAAO,KAE7DoJ,aAAc,GACdzE,cAAe,IAAI3V,KAAK4J,EAAW+L,gBAErC0E,eAAgB,WACd5C,IAAe,EAChB,IAGJ0I,KACC,SAAC2B,GAAD,CACEzZ,WAAY8X,GACZ/X,2BAjJsB,SAAC2Z,GAC7B3B,IAAwB,GAEpB2B,IACFnqB,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GAASqiB,EAAAA,EAAAA,IAAmB,KAC5BriB,GAAS2gB,EAAAA,EAAAA,KAAqB,IAEjC,EA0IOjQ,eAAgB/Q,EAChB+P,eAAgB9P,IAGnBipB,KACC,SAACuB,GAAD,CACE1Z,eAAgB/Q,EAChB+P,gBAAgBiC,EAAAA,EAAAA,IAAgB/R,GAChC6Q,WAAYoY,GACZ1B,iBAAkBwB,GAClBnY,2BAlJsB,SAAC6Z,GAC7BvB,IAAoB,GAEhBuB,IACFrqB,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GAASqiB,EAAAA,EAAAA,IAAmB,KAC5BriB,GAAS2gB,EAAAA,EAAAA,KAAqB,IAC9BiI,GAAiB,IAEpB,KA4IG,UAAC3lB,EAAA,GAAD,CAAMiI,WAAS,EAAChJ,UAAWxC,EAAQ2nB,kBAAnC,WACIrV,IACA,SAAC/O,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACmnB,GAAA,EAAD,MAIHtY,IACC,UAAC,EAAA/P,SAAD,YACE,SAACgB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAAC,EAAD,CACExD,WAAYA,EACZC,eAAe+R,EAAAA,EAAAA,IAAgB/R,GAC/BC,cAAe,GACfC,gBAAgB,OAGpB,SAACmD,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+nB,qBAAtC,UACE,SAAC8C,EAAA,EAAD,CACErmB,MACE,iBAAMhC,UAAWxC,EAAQ8qB,SAAzB,UACE,SAAC,MAAD,MAGJhf,OACE,kBAAMtJ,UAAWxC,EAAQ+qB,YAAzB,UACGvK,GAAgB3e,OAAS,EACtB2e,GAAgBA,GAAgB3e,OAAS,GACzCyQ,EAAWlG,KAAM,IAHvB,cAOF4e,UACE,SAAC,EAAAzoB,SAAD,WACE,UAACgB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQirB,cAAtC,WACE,iBAAMzoB,UAAWxC,EAAQkrB,cAAzB,UACE,8BACGnL,EAASle,OADZ,WAEuB,IAApBke,EAASle,OAAe,GAAK,IAFhC,qBAKF,iBAAMW,UAAWxC,EAAQkrB,cAAzB,UACE,6BAAS3H,EAAAA,EAAAA,IAAauG,aAK9BqB,SACE,UAAC,EAAA5oB,SAAD,YACE,SAACuC,EAAA,EAAD,CAAgBC,QAAS,2BAAzB,UACE,SAAC,IAAD,CACER,GAAI,2BACJ3B,QAAS,WACPomB,IAAkBD,GACnB,EACDvkB,MAAM,SAAC,MAAD,IACNG,QAASokB,GAAgB,aAAe,UACxCtmB,MAAO,CAAE0B,YAAa,OAGzB4kB,KACC,SAACjkB,EAAA,EAAD,CAAgBC,QAAS,2BAAzB,UACE,SAAC,IAAD,CACER,GAAI,2BACJ3B,QAAS,WACPwmB,IAAoB,EACrB,EACD5kB,MAAM,SAAC,MAAD,IACNG,QAAS,YACTlC,MAAO,CAAE0B,YAAa,GACtBc,SAAmC,IAAzBgkB,GAAcpnB,YAI9B,SAACiD,EAAA,EAAD,CAAgBC,QAAS,8BAAzB,UACE,SAAC,IAAD,CACER,GAAI,qBACJ3B,QAAS,WACPkmB,IAAwB,EACzB,EACDtkB,MAAM,SAAC,MAAD,IACNG,QAAS,YACTlC,MAAO,CAAE0B,YAAa,IACtBc,SAAU8a,EAASle,QAAU,OAGjC,iBAAMW,UAAWxC,EAAQioB,YAAzB,sBACA,SAACmD,GAAA,EAAD,CACE7mB,GAAI,UACJY,MAAO,GACPgD,MAAOwgB,GACPtc,SAAU,SAACC,GACTsc,GAAatc,EAAEC,OAAOpE,MACvB,EACDiE,KAAM,UACNif,QAAS,CACP,CAAElmB,MAAO,OAAQgD,MAAO,QACxB,CACEhD,MAAO,OACPgD,MAAO,cAMjB3F,UAAWxC,EAAQ4nB,oBAGvB,SAACrkB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ6nB,qBAAtC,SACGvV,EAAWpC,YAAwC,SAA1BoC,EAAWpC,aAEnC,SAAC,MAAD,CACEzN,MAAO,CACLwB,MAAO,QAETqnB,eAAgB,CACdrnB,MAAO,OACPwhB,SAAU,QAEZxhB,MAAO,EACPC,OAAQ,IACRqnB,SAAU3B,GAAgB/nB,OAC1B2pB,UAAW,IACXC,YAlNI,SAAC,GAMA,IALnB9E,EAKkB,EALlBA,IACA1kB,EAIkB,EAJlBA,MAGAQ,GACkB,EAHlBipB,YAGkB,EAFlBC,UAEkB,EADlBlpB,OAEMmpB,EAAU7L,EAASle,OAASI,EAClC,OACE,SAAC,GAAD,CACEQ,MAAOA,EAEPwS,UAAoB,OAAV3C,QAAU,IAAVA,OAAA,EAAAA,EAAYlG,OAAQ,GAC9B6Z,YAAa2D,GAAgB3nB,GAC7BA,MAAO2pB,EACPrF,WAAYmD,GACZlD,UAAWiD,GACXnD,QAASiD,GACT9C,UAAW+C,GACX9C,YAAaiD,GACbzD,WAAYhV,IAAoB0Y,GAAgB3nB,GAAOiO,WACvDiW,UAAW4C,GACX1C,QAAS+D,GACThE,UAAW6C,GAAc/G,SACvB0H,GAAgB3nB,GAAOiO,YAAc,KAblCyW,EAiBV,cA+LF,I,uBClfKkF,GAAcpsB,EAAAA,MAClB,kBAAM,uCAAN,IAEIqsB,GAAcrsB,EAAAA,MAClB,kBAAM,uCAAN,IAGIssB,GAAatsB,EAAAA,MACjB,kBAAM,uCAAN,IAGIusB,IAAwBxsB,EAAAA,EAAAA,GAC5BC,EAAAA,MAAW,kBAAM,8BAAN,KAEP6iB,IAAY9iB,EAAAA,EAAAA,GAChBC,EAAAA,MAAW,kBAAM,uCAAN,KAEPwsB,IAAezsB,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,kEAAN,KACvCojB,IAAmBrjB,EAAAA,EAAAA,GACvBC,EAAAA,MAAW,kBAAM,uCAAN,KAGPqH,IAAYC,EAAAA,EAAAA,IAAW,SAACpH,GAAD,OAC3BC,EAAAA,EAAAA,IAAa,gDACXssB,YAAa,CACXroB,OAAQ,EACRK,OAAQ,sBACR,eAAgB,CACdA,OAAQ,uBAEV,qBAAsB,CACpBgR,UAAW,QAEb,4BAA6B,CAC3BjR,MAAO,MAGX,UAAW,CACT,+BAAgC,CAC9BkoB,gBAAiB,mCAEnB,iCAAkC,CAChCA,gBAAiB,sCAIrBC,aAAc,CACZ,oBAAqB,CACnBpkB,IAAK,GACLD,MAAO,EACP9D,MAAO,EACPC,OAAQ,EACR0D,SAAU,IAGdykB,YAAa,CACXpjB,aAAc,EACdqjB,WAAY,EACZ3e,YAAa,EACb4e,aAAc,IAEbpE,EAAAA,IACAxJ,EAAAA,IACA6N,EAAAA,IAxCO,IA0CVA,aAAY,kBACPA,EAAAA,GAAAA,aADM,IAET/G,SAAU,MAEZsC,qBAAsB,CACpBlkB,OAAQ,oBACR0Q,QAAS,iBAEXkY,WAAY,CACV5nB,MAAO,UACPqE,SAAU,QAEZwjB,qBAAsB,CACpBnY,QAAS,iBAEXoY,cAAe,CACb,4BAA6B,CAC3BplB,UAAW,SAGfqlB,cAAe,CACb,4BAA6B,CAC3B3oB,MAAO,IAGX4oB,gBAAiB,CACf,4BAA6B,CAC3B3f,QAAS,UAGVkb,EAAAA,IACAvoB,EAAAA,KACAsc,EAAAA,EAAAA,IAAmBxc,EAAMyc,QAAQ,KA3EX,IA+EvB0Q,GAAe,CACnB5lB,YAAa,EACblD,aAAc,EACdiD,YAAa,UACb8lB,QAAS,QAGLC,GAAiB,CACrB7lB,YAAa,SACbrD,gBAAiB,UACjBmD,YAAa,WAGTgmB,GAAiB,CACrB9lB,YAAa,SACbrD,gBAAiB,UACjBmD,YAAa,WA0Bf,IAAMimB,IAAa,SAACC,EAAA,EAAD,CAAY/Y,UAAU,KAAtB,wBAu1CnB,GAr1CoB,WAAO,IAAD,EAClBpU,EAAU8G,KACVxG,GAAWC,EAAAA,EAAAA,MACX6sB,GAASC,EAAAA,EAAAA,MACT7sB,GAAWC,EAAAA,EAAAA,MACX6sB,GAAWC,EAAAA,EAAAA,MAEX7sB,GAAgBC,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAcC,OAAOJ,aAAhD,IAEI8sB,GAAa7sB,EAAAA,EAAAA,KACjB,SAACC,GAAD,OAAqBA,EAAMC,cAAcC,OAAO2sB,YAAhD,IAEIC,GAAiB/sB,EAAAA,EAAAA,KACrB,SAACC,GAAD,OAAqBA,EAAMC,cAAcC,OAAO4sB,cAAhD,IAEI3sB,GAAeJ,EAAAA,EAAAA,KACnB,SAACC,GAAD,OAAqBA,EAAMC,cAAcE,YAAzC,IAGI4sB,GAAgBhtB,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAc8sB,aAAzC,IAEIC,GAAcjtB,EAAAA,EAAAA,KAClB,SAACC,GAAD,OAAqBA,EAAMC,cAAc+sB,WAAzC,IAEIC,GAAcltB,EAAAA,EAAAA,KAClB,SAACC,GAAD,OAAqBA,EAAMC,cAAcitB,iBAAzC,IAEIC,GAAwBptB,EAAAA,EAAAA,KAC5B,SAACC,GAAD,OAAqBA,EAAMC,cAAcktB,qBAAzC,IAEIC,GAAUrtB,EAAAA,EAAAA,KACd,SAACC,GAAD,OAAqBA,EAAMC,cAAcotB,cAAzC,IAEIC,GAAavtB,EAAAA,EAAAA,KACjB,SAACC,GAAD,OAAqBA,EAAMC,cAAcqtB,UAAzC,IAGIC,GAAgBxtB,EAAAA,EAAAA,IAAYytB,GAAAA,IAC5BC,GAAa1tB,EAAAA,EAAAA,IAAY2tB,GAAAA,IACzBC,GAAiB5tB,EAAAA,EAAAA,KACrB,SAACC,GAAD,OAAqBA,EAAMsgB,QAAQsN,QAAQD,cAA3C,IAGIE,GAAW9tB,EAAAA,EAAAA,IAAY+tB,GAAAA,IACvBC,IAAU,OAACF,QAAD,IAACA,IAAAA,EAAUvM,SAAS,wBAEpC,GAA8BjhB,EAAAA,EAAAA,UAA6B,IAA3D,eAAO2tB,EAAP,KAAgBC,EAAhB,KACA,IAAoD5tB,EAAAA,EAAAA,WAAkB,GAAtE,iBAAO6tB,GAAP,MAA2BC,GAA3B,MACA,IAAgD9tB,EAAAA,EAAAA,UAAiB,GAAjE,iBAAO+tB,GAAP,MAAyBC,GAAzB,MACA,IACEhuB,EAAAA,EAAAA,UAA0BisB,IAD5B,iBAAOgC,GAAP,MAAuBC,GAAvB,MAEA,IAAkDluB,EAAAA,EAAAA,WAAkB,GAApE,iBAAOmuB,GAAP,MAA0BC,GAA1B,MACA,IAAsCpuB,EAAAA,EAAAA,WAAkB,GAAxD,iBAAOquB,GAAP,MAAoBC,GAApB,MACA,IAA4CtuB,EAAAA,EAAAA,WAAkB,GAA9D,iBAAOuuB,GAAP,MAAuBC,GAAvB,MACA,IAA4CxuB,EAAAA,EAAAA,WAAkB,GAA9D,iBAAOyuB,GAAP,MAAuBC,GAAvB,MACA,IAAwC1uB,EAAAA,EAAAA,WAAkB,GAA1D,iBAAO2uB,GAAP,MAAqBC,GAArB,MACA,IAA8C5uB,EAAAA,EAAAA,UAAmB,IAAjE,iBAAO6uB,GAAP,MAAwBC,GAAxB,MACA,IAAsC9uB,EAAAA,EAAAA,WAAkB,GAAxD,iBAAOif,GAAP,MAAoBC,GAApB,MACA,IACElf,EAAAA,EAAAA,UAAkC,MADpC,iBAAO+uB,GAAP,MAAwBC,GAAxB,MAEA,IAAoDhvB,EAAAA,EAAAA,WAAkB,GAAtE,iBAAO+d,GAAP,MAA2BC,GAA3B,MACA,IAA0Che,EAAAA,EAAAA,UAExC,OAFF,iBAAOivB,GAAP,MAAsBC,GAAtB,MAGA,IAAgDlvB,EAAAA,EAAAA,UAAiB,QAAjE,iBAAOmvB,GAAP,MAAyBC,GAAzB,MACA,IAA8BpvB,EAAAA,EAAAA,WAAkB,GAAhD,iBAAOqvB,GAAP,MAAgBC,GAAhB,MACA,IAAwCtvB,EAAAA,EAAAA,WAAkB,GAA1D,iBAAOuvB,GAAP,MAAqBC,GAArB,MACA,IAA4CxvB,EAAAA,EAAAA,WAAkB,GAA9D,iBAAOyvB,GAAP,MAAuBC,GAAvB,MACA,IAA0B1vB,EAAAA,EAAAA,UAA6B,MAAvD,iBAAO2vB,GAAP,MAAcC,GAAd,MACA,IACE5vB,EAAAA,EAAAA,UAAkC,MADpC,iBAAO6vB,GAAP,MAA4BC,GAA5B,MAGMC,GAAc1D,EAAS2D,SAASxvB,MAAM,YAEtCvB,GAAuC,IAAvB8wB,GAAYnvB,OAAemvB,GAAY,GAAK,GAC5D/wB,GAAamtB,EAAOntB,YAAc,GAElCixB,IAAajiB,EAAAA,EAAAA,QAAyB,MACtCkiB,IAAeliB,EAAAA,EAAAA,QAAyB,OAE9C7E,EAAAA,EAAAA,YAAU,WACqB,OAAzB+mB,GAAahiB,UACfgiB,GAAahiB,QAAQiiB,aAAa,YAAa,IAC/CD,GAAahiB,QAAQiiB,aAAa,kBAAmB,IAExD,GAAE,CAACD,MAEJ/mB,EAAAA,EAAAA,YAAU,WACR,GAA+B,IAA3B0lB,GAAgBjuB,OAAc,CAChC,IAAMkB,EAAa+sB,GAAgB,GAEE,UAAjCzN,EAAAA,EAAAA,IAAiBtf,GACnB4tB,IAAkB,GAElBA,IAAkB,GAGhB5tB,EAAWmP,SAAS,KACtBue,IAAgB,GAEhBA,IAAgB,EAEnB,MACCA,IAAgB,GAChBE,IAAkB,EAErB,GAAE,CAACb,MAEJ1lB,EAAAA,EAAAA,YAAU,WACHwmB,IACHxgB,EAAAA,EAAAA,OACU,MADV,0BACoCnQ,GADpC,WAEGsQ,MAAK,SAACC,GACL,IAAI6gB,EAAY,KAEZ7gB,EAAIogB,QACNS,EAAY7gB,GAGdqgB,GAASQ,EACV,IACA5gB,OAAM,SAACW,GACN8P,QAAQxQ,MAAM,+BAAgCU,EAAIqK,eAClDoV,GAAS,KACV,GAEN,GAAE,CAACD,GAAO3wB,MAEXmK,EAAAA,EAAAA,YAAU,WACJ0lB,GAAgBjuB,OAAS,EAC3BvB,GAASgxB,EAAAA,EAAAA,KAAqB,IAID,IAA3BxB,GAAgBjuB,QAA0C,OAA1BksB,GAClCztB,GAASgxB,EAAAA,EAAAA,KAAqB,GAEjC,GAAE,CAACxB,GAAiB/B,EAAuBztB,IAE5C,IAAMixB,IAAsBlwB,EAAAA,EAAAA,GAAcpB,GAAY,CACpDqB,EAAAA,GAAAA,mBAGIkwB,IAAqBnwB,EAAAA,EAAAA,GAAcpB,GAAY,CACnDqB,EAAAA,GAAAA,kBAwBF8I,EAAAA,EAAAA,YAAU,WACHkmB,KACHhwB,GAASmxB,EAAAA,GAAAA,KAAqB,IAC9BlB,IAAW,GAEd,GAAE,CAACD,GAAShwB,EAAUiwB,KAxMzB,SAAqBmB,EAAeC,GAClC,IAAMC,GAAgB3iB,EAAAA,EAAAA,QAAwB,OAG9C7E,EAAAA,EAAAA,YAAU,WACRwnB,EAAcziB,QAAUuiB,CACzB,GAAE,CAACA,KAGJtnB,EAAAA,EAAAA,YAAU,WAOR,GAAc,OAAVunB,EAAgB,CAClB,IAAIptB,EAAKstB,aAPX,gBACwB3rB,IAAlB0rB,GAA+BA,EAAcziB,SAC/CyiB,EAAcziB,SAEjB,GAG4BwiB,GAC3B,OAAO,kBAAMG,cAAcvtB,EAApB,CACR,CACF,GAAE,CAACotB,GACL,CAqLCI,EAAY,WAEN/D,GA9BgB,WACpB,IAAIgE,EAAYtpB,KAAKupB,MAAQjD,GAEzBgD,EAAY,KAAQ,EACtB7C,IACE,SAAC,EAAA5sB,SAAD,WACE,UAAC4qB,EAAA,EAAD,CAAY/Y,UAAU,KAAtB,+DAEGwI,KAAKsV,KAAKF,EAAY,KAFzB,WAMKA,EAAY,KAAQ,GAC7B7C,IACE,SAAChC,EAAA,EAAD,CAAY/Y,UAAU,KAAtB,8DAKL,CAYG+d,EAEH,GAAE,MAEH/nB,EAAAA,EAAAA,YAAU,WACJglB,KACEoC,GACFphB,EAAAA,EAAAA,OACU,MADV,0BACoCnQ,GADpC,gBAEGsQ,MAAK,SAACC,GACL+e,GAAe/e,EAAI4hB,cACnB/C,IAAqB,EACtB,IACA5e,OAAM,SAACW,GACN8P,QAAQxQ,MACN,2CACAU,EAAIqK,eAEN4T,IAAqB,EACtB,KAEHA,IAAqB,GACrBR,EAAW,KAGhB,GAAE,CAAC5uB,GAAYmvB,GAAmB9uB,EAAUkxB,MAE7CpnB,EAAAA,EAAAA,YAAU,WACJolB,KACEgC,GACFphB,EAAAA,EAAAA,OACU,MADV,0BACoCnQ,GADpC,oBAEGsQ,MAAK,SAACC,GACLmf,GAAkBnf,EAAI6hB,wBACtB5C,IAAkB,EACnB,IACAhf,OAAM,SAACW,GACN8P,QAAQxQ,MACN,wCACAU,EAAIqK,eAENgU,IAAkB,EACnB,KAEHZ,EAAW,IACXY,IAAkB,IAGvB,GAAE,CAACxvB,GAAYuvB,GAAgBlvB,EAAUkxB,MAE1CpnB,EAAAA,EAAAA,YAAU,WACR,IAAMkoB,GAAgBrgB,EAAAA,EAAAA,IAAgB/R,IAElCoyB,EAAcpgB,SAAS,MAA0B,KAAlBogB,GACjChyB,GAASgxB,EAAAA,EAAAA,KAAqB,IAC9BhxB,GAASiyB,EAAAA,EAAAA,IAAsB,OAC/BjyB,GACEkyB,EAAAA,EAAAA,IAAuC,KAAlBF,EAAuB,IAAMA,MAGpDhyB,GAAS2gB,EAAAA,EAAAA,KAAqB,IAC9B3gB,GAASgxB,EAAAA,EAAAA,KAAqB,IAC9BhxB,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GACEiyB,EAAAA,EAAAA,IAAsB,GAAD,OAChBD,EAAa,WAAMhwB,EAAAA,EAAAA,IAAgBgwB,IAAtB,MAGpBhyB,GACEkyB,EAAAA,EAAAA,IAAqB,GAAD,OACfF,EAAc7wB,MAAM,KAAKU,MAAM,GAAI,GAAGC,KAAK,KAD5B,OAKzB,GAAE,CAAClC,GAAestB,EAAY9sB,EAAeJ,KAE9C8J,EAAAA,EAAAA,YAAU,WACR9J,GAASmyB,EAAAA,EAAAA,IAAiB,KAC1BnyB,GAASoyB,EAAAA,EAAAA,KAAsB,IAC/B3C,GAAmB,GACpB,GAAE,CAAC7B,EAAY5tB,EAAUyvB,MAE1B3lB,EAAAA,EAAAA,YAAU,WACR,GAAI4jB,EACF,GAAIwD,GAAoB,CACtB,IAAImB,EAAa,GACjB,GAAIzyB,GAAe,CACjB,IAAM0yB,GAAc3gB,EAAAA,EAAAA,IAAgB/R,IACpCyyB,EAAaC,EAAY1gB,SAAS,KAC9B0gB,EACAA,EAAc,GACnB,CAED,IAAIC,EAAmBnqB,KAAKupB,MAC5BhD,GAAoB4D,GACpB1D,GAAkBjC,IAGlB,IAAI4F,EAAO,0BAAsB7yB,GAAtB,YAGX,GAAIS,EAAe,CACjB,GAAIgtB,IAAmBztB,GAErB,YADAK,GAASyyB,EAAAA,EAAAA,OAIX,GAAIvF,EAAY,CACd,IAAMwF,EAAexF,EAAWziB,cAEhC+nB,EAAO,0BAAsB7yB,GAAtB,mBAA2C+yB,EACnD,CACF,MAAM,GAAIpF,EAAa,CAEtB,IACMqF,GADW,IAAIvqB,MACQqC,cAE7B+nB,EAAO,0BAAsB7yB,GAAtB,mBAA2CgzB,EACnD,CAED7iB,EAAAA,EAAAA,OAEI,MAFJ,UAGO0iB,GAHP,OAIMH,EAAU,mBAAcrwB,EAAAA,EAAAA,IAAgBqwB,IAA9B,KAGbpiB,MAAK,SAACC,GACL,IAAMoe,EAA8Bpe,EAAI0iB,SAAW,GAC7CC,EAA8B,GAC9BC,EAA4B,GAGlCxE,EAAQyE,SAAQ,SAACC,GAEXA,EAAOlnB,QAAS6F,EAAAA,EAAAA,IAAgB/R,MAE9BozB,EAAOlnB,KAAK8F,SAAS,KACvBihB,EAAQ5I,KAAK+I,GAGbF,EAAM7I,KAAK+I,GAGhB,IAED,IAAMC,EAAgB,UAAOJ,EAAYC,GAEzC,GAAgC,IAA5BG,EAAiB1xB,QAA+B,KAAf8wB,EAAmB,CACtD,IAAIa,EAAQ,0BAAsBvzB,GAAtB,mBACVC,GAAa,kBAAcA,IAAkB,IAG/C,GAAIQ,EAAe,CACjB,IAAMsyB,EAAexF,EAAWziB,cAE5B4nB,EAAa,GACjB,GAAIzyB,GAAe,CACjB,IAAM0yB,GAAc3gB,EAAAA,EAAAA,IAAgB/R,IACpCyyB,EAAaC,EAAY1gB,SAAS,KAC9B0gB,EACAA,EAAc,GACnB,CAEDY,EAAQ,0BAAsBvzB,GAAtB,mBAA2C+yB,GAA3C,OACNL,EAAU,mBAAcrwB,EAAAA,EAAAA,IAAgBqwB,IAA9B,GAEb,CAEDviB,EAAAA,EAAAA,OACU,MAAOojB,GACdjjB,MAAK,SAACC,GAEL,GAAKA,EAAI0iB,QAIF,CASL,IALA,IAAIO,GAAQ,EACRC,EAAoBf,EAAWxwB,MACjC,EACAwwB,EAAW9wB,OAAS,GAEb8xB,EAAI,EAAGA,EAAInjB,EAAI0iB,QAAQrxB,OAAQ8xB,IAClCnjB,EAAI0iB,QAAQS,GAAGvnB,OAASsnB,IAC1BD,GAAQ,GAGZ,GAC0B,IAAvBjjB,EAAI0iB,QAAQrxB,QACX2O,EAAI0iB,QAAQ,GAAG9mB,KAAK8F,SAAS,OAC9BuhB,EAGD5E,EAAW0E,OACN,CAELjzB,GAASgxB,EAAAA,EAAAA,KAAqB,IAC9BhxB,GAASiyB,EAAAA,EAAAA,IAAsBryB,KAG/B,IAAM0zB,EAAU,WAAM3hB,EAAAA,EAAAA,IAAgB/R,IACnCuB,MAAM,KACNU,MAAM,GAAI,GACVC,KAAK,KAHQ,KAKhBgO,EAAAA,EAAAA,OAEI,MAFJ,UAGO0iB,GAHP,OAIMH,EAAU,mBACKrwB,EAAAA,EAAAA,IAAgBsxB,IADrB,KAKbrjB,MAAK,SAACC,GACL,IAAMoe,EAA8Bpe,EAAI0iB,SAAW,GAEnDrE,EAAWD,EACZ,IACAne,OAAM,WAAQ,GAClB,CAEDnQ,GAASoyB,EAAAA,EAAAA,KAAsB,GAChC,MApDCpyB,GAASoyB,EAAAA,EAAAA,KAAsB,IAC/B7D,EAAW0E,EAoDd,IACA9iB,OAAM,SAACW,GACN9Q,GAASoyB,EAAAA,EAAAA,KAAsB,IAC/BpyB,GAAS+Q,EAAAA,EAAAA,IAAqBD,GAC/B,GACJ,MACCyd,EAAW0E,GACXjzB,GAASoyB,EAAAA,EAAAA,KAAsB,GAElC,IACAjiB,OAAM,SAACW,GACN,IAAMyiB,GAAcC,EAAAA,EAAAA,IAClB7zB,GACA0yB,EACApE,GAAkB,IAGfsF,GAAsC,IAAvBA,EAAYhyB,OAG9BgtB,EAAWgF,GAFXvzB,GAAS+Q,EAAAA,EAAAA,IAAqBD,IAKhC9Q,GAASoyB,EAAAA,EAAAA,KAAsB,GAChC,GACJ,MACCpyB,GAASoyB,EAAAA,EAAAA,KAAsB,GAGpC,GAAE,CACD1E,EACA1tB,EACAL,GACAS,EACA8sB,EACAttB,GACAmuB,EACAT,EACA4D,GACA9D,EACAa,KAIFnkB,EAAAA,EAAAA,YAAU,WACJ+jB,GACF/d,EAAAA,EAAAA,OACU,MADV,0BACoCnQ,KACjCsQ,MAAK,SAACC,GACLlQ,GAASmxB,EAAAA,GAAAA,KAAqB,IAC9BnxB,GAASyzB,EAAAA,GAAAA,IAAcvjB,GACxB,IACAC,OAAM,SAACW,GACN9Q,GAASmxB,EAAAA,GAAAA,KAAqB,IAC9BnxB,GAAS+Q,EAAAA,EAAAA,IAAqBD,GAC/B,GAEN,GAAE,CAACnR,GAAYkuB,EAAe7tB,IAE/B,IAUM0zB,GAAqB,SAAC1nB,GAC1B,GACQ,OAANA,QACMpG,IAANoG,GACmB,OAAnBA,EAAEC,OAAO6mB,YACUltB,IAAnBoG,EAAEC,OAAO6mB,MAJX,CAQA9mB,EAAEoD,iBAGF,IAFA,IAAIukB,EAAmB,GAEdN,EAAI,EAAGA,EAAIrnB,EAAEC,OAAO6mB,MAAMvxB,OAAQ8xB,IACzCM,EAAS1J,KAAKje,EAAEC,OAAO6mB,MAAMO,IAE/BO,GAAaD,EAAU,IAEvB3nB,EAAEC,OAAOpE,MAAQ,EAThB,CAUF,EAqEK+rB,IAAe1gB,EAAAA,EAAAA,cACnB,SAAC4f,EAAee,GACd,IAAIxB,EAAa,GACbzE,IACFyE,EAAazE,EAAWhc,SAAS,KAAOgc,EAAaA,EAAa,MAGrD,SACbkF,EACAnzB,EACA0B,EACAwyB,GAEA,IAAIC,EAAgB,SAACnZ,GACnB,OAAO,IAAIoZ,SAAQ,SAACC,EAASC,GAC3B,IAAIC,EAAS,yBAAqBv0B,EAArB,mBACPgV,EAAWgG,EAAK7O,KAEhBqoB,EAAW,IAAIC,KAAK,CAACzZ,GAAO,CAAEjN,KAAMiN,EAAKjN,OAE3C2mB,EAAc,GAEZC,EAAWniB,IAAIwI,EAAM,OAAQ,IAC7B4Z,EAAyBpiB,IAAIwI,EAAM,qBAAsB,IAE3D6Z,EAAqBX,EACnBrX,GAAKC,EAAAA,GAAAA,IAAO,GAUlB,GAPiB,KAAb6X,EACFE,EAAqBF,EACe,KAA3BC,IAETC,EAAqBD,GAGV,KAATlzB,GAAsC,KAAvBmzB,EAA2B,CAC5C,IAAMC,EAAkBD,EACrBrzB,MAAM,KACNU,MAAM,GAAI,GACVC,KAAK,KAEF4yB,EAAYrzB,EAAKuQ,SAAS,KAAOvQ,EAAKQ,MAAM,GAAI,GAAKR,EAE3DgzB,GAAcryB,EAAAA,EAAAA,IAAgB,GAAD,OACxB0yB,GADwB,OAExBA,EAAU9iB,SAAS,MACA,KAApB6iB,GACCA,EAAgBE,WAAW,KAExB,GADA,KALqB,OAOxBF,GAPwB,QAQxBA,EAAgB7iB,SAAS,MACE,KAA3B6iB,EAAgBhb,SAAkBpY,EAAKuQ,SAAS,KAC7C,IACA,IAGT,CAEmB,KAAhByiB,IACFH,EAAS,UAAMA,EAAN,mBAA0BG,IAGrC,IAAMO,GAAW5yB,EAAAA,EAAAA,IAAgB,GAAD,OAC3BrC,EAD2B,YACb00B,EADa,aACE,IAAIjsB,MAAOiU,UADb,YAC0BC,KAAKC,WAG3DsY,EAAM,IAAIC,eACdD,EAAI7uB,KAAK,OAAQkuB,GAAW,GAE5B,IAAMa,EAAmBjC,EAAMvxB,OAAS,EACpC0Z,EAAY,oDACd8Z,EAAmB,IAAM,GADX,KAIVC,EAAqB,CACzB,IAAK,+BAGPH,EAAII,iBAAkB,EACtBJ,EAAIK,OAAS,SAAUrvB,GAErB,GAAIgvB,EAAIryB,QAAU,KAAOqyB,EAAIryB,OAAS,IACpCxC,GAAS+c,EAAAA,EAAAA,IAAe6X,IACxBZ,EAAQ,CAAExxB,OAAQqyB,EAAIryB,UAEtB2yB,EAAAA,GAAAA,IAAY3Y,OACP,CAEL,GAAIwY,EAAcH,EAAIryB,QACpByY,EAAe+Z,EAAcH,EAAIryB,aAC5B,GAAIqyB,EAAIO,SACb,IACE,IAAMtkB,EAAMukB,KAAKnrB,MAAM2qB,EAAIO,UAC3Bna,EAAenK,EAAIwkB,eAGpB,CAFC,MAAOtpB,GACPiP,EAAe,sBAChB,CAGHjb,GACEid,EAAAA,EAAAA,IAAW,CACTH,WAAY8X,EACZ5X,IAAK/B,KAGTgZ,EAAO,CAAEzxB,OAAQqyB,EAAIryB,OAAQ0Y,QAASD,KAEtCka,EAAAA,GAAAA,IAAY3Y,EACb,CACF,EAEDqY,EAAIU,OAAOC,iBAAiB,SAAS,SAAC3vB,GACpCouB,EAAOhZ,GACPjb,GACEid,EAAAA,EAAAA,IAAW,CACTH,WAAY8X,EACZ5X,IAAK,8BAIV,IAED6X,EAAIU,OAAOC,iBAAiB,YAAY,SAAC3vB,GACvC,IAAM+W,EAAWN,KAAKmZ,MAAsB,IAAf5vB,EAAM6vB,OAAgB7vB,EAAM8vB,OAEzD31B,GACE6c,EAAAA,EAAAA,IAAe,CACbC,WAAY8X,EACZhY,SAAUA,IAGf,IAEDiY,EAAIe,QAAU,WACZ3B,EAAOhZ,GACPjb,GACEid,EAAAA,EAAAA,IAAW,CACTH,WAAY8X,EACZ5X,IAAK,8BAIV,EACD6X,EAAIgB,UAAY,WACO,IAAjB/C,EAAMvxB,QACRvB,GAASoyB,EAAAA,EAAAA,KAAsB,GAElC,EACDyC,EAAIiB,QAAU,WACZ91B,GAASkd,EAAAA,EAAAA,IAAmB0X,GAC7B,EAED,IAAMmB,EAAW,IAAIC,cACHpwB,IAAd+U,EAAKvB,OACP2c,EAASE,OAAOtb,EAAKvB,KAAK1W,WAAYyxB,EAAUxf,IAChDwI,EAAAA,GAAAA,IAAyBX,EAAIqY,GAC7B70B,GACEod,EAAAA,EAAAA,IAAa,CACXZ,GAAAA,EACA7c,WAAAA,EACA0d,MAAM,EACNP,WAAY8X,EACZtX,WAAY,EACZC,OAAO,GAAD,QAAK5L,EAAAA,EAAAA,IAAgB0iB,IAArB,OAAoC1f,GAC1CjH,KAAM,SACN8P,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACXzC,aAAc,OAIlBib,EAAAA,GAAAA,IAAoB1Z,EAAIuZ,IACxB5Y,EAAAA,GAAAA,IAAyBX,EAAIqY,GAEhC,GACF,EAEKsB,EAA0B,GAEhCn2B,GAASo2B,EAAAA,EAAAA,OACT,IAAK,IAAI/C,EAAI,EAAGA,EAAIP,EAAMvxB,OAAQ8xB,IAAK,CACrC,IAAM1Y,EAAOmY,EAAMO,GACnB8C,EAAmBlM,KAAK6J,EAAcnZ,GACvC,CACDoZ,QAAQsC,WAAWF,GAAoBlmB,MAAK,SAACqmB,GAC3C,IAAMC,EAASD,EAAQl1B,QACrB,SAACkf,GAAD,MAA8B,aAAlBA,EAAO9d,MAAnB,IAEF,GAAI+zB,EAAOh1B,OAAS,EAAG,CACrB,IAAMi1B,EAAaL,EAAmB50B,OAChCk1B,EACJN,EAAmB50B,OAASg1B,EAAOh1B,OAC/BuP,EAA4B,CAChCmK,aAAc,4CACdE,cAAc,kBAAD,OAAoBsb,EAApB,YAA4CD,IAE3Dx2B,GAAS+Q,EAAAA,EAAAA,IAAqBD,GAC/B,CAED9Q,GAASoyB,EAAAA,EAAAA,KAAsB,IAC/B3C,GAAmB,GACpB,GACF,CAED8F,CAAOzC,EAAOnzB,GAAY0yB,EAAYwB,EACvC,GACD,CAACl0B,GAAYK,EAAU4tB,IAGnB8I,IAASxjB,EAAAA,EAAAA,cACb,SAACyjB,GACC,GAAIA,GAAiBA,EAAcp1B,OAAS,GAAKq1B,GAAW,CAC1D,IAAIC,EAAwBF,EAAc,GAAGt1B,KAC7CuyB,GAAa+C,EAAeE,EAC7B,CACID,IACH52B,GACE+Q,EAAAA,EAAAA,IAAqB,CACnBkK,aAAc,qBACdE,eAAezW,EAAAA,EAAAA,IACb,CAAC1D,EAAAA,GAAAA,eACD,qCAKT,GAED,CAAC4yB,KAGH,IACEkD,EAAAA,EAAAA,IAAY,CACVC,SAAS,EACTL,OAAAA,KAHIM,GAAR,GAAQA,aAAcC,GAAtB,GAAsBA,cAAeC,GAArC,GAAqCA,aAAcC,GAAnD,GAAmDA,aAM7CC,IAAYC,EAAAA,EAAAA,UAChB,0BAAC,kBACI7K,IACC0K,GAAexK,GAAiB,CAAC,GACjCyK,GAAexK,GAAiB,CAAC,EAHvC,GAKA,CAACuK,GAAcC,KAwCX7N,GAAkBgF,EAAQltB,QAAO,SAACuoB,GACtC,MAAsB,KAAlB0D,GAGiB1D,EAAE7d,KAAKuC,cACXqI,QAAQ2W,EAAchf,gBAAkB,CAM1D,IAsCKipB,IAAY3lB,EAAAA,EAAAA,IAAgB/R,IAC5B23B,GAAcD,GAAUn2B,MAAM,KAAKC,QAAO,SAACiyB,GAAD,MAAqB,KAANA,CAAf,IAG1CmE,GADWlO,GACQG,MAAKgO,EAAAA,EAAAA,IAAgB3H,KAE1C4H,GAA8B,GAGhCA,GADoB,QAAlB9H,GACQ4H,GAEAA,GAAQG,UAGpB,IAsCI3yB,GAAa,CAACrF,IACd43B,GAAYh2B,OAAS,IACvByD,GAAaA,GAAW4yB,OAAOL,KAGjC,IAAMM,IAAc92B,EAAAA,EAAAA,GAAcpB,GAAY,CAACqB,EAAAA,GAAAA,gBACzCwgB,IAAYzgB,EAAAA,EAAAA,GAAcpB,GAAY,CAACqB,EAAAA,GAAAA,mBACvC41B,IAAY71B,EAAAA,EAAAA,GAAciE,GAAY,CAAChE,EAAAA,GAAAA,gBAEvCwd,GAAe,SAACsZ,GAGpB,GAFA93B,GAASiyB,EAAAA,EAAAA,IAAsB,OAC/BjyB,GAASuC,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,KACtC+qB,GAAyC,OAA1BE,EAAgC,CAGjD,IACMsK,GADcpmB,EAAAA,EAAAA,IAAgB/R,IACNuB,MAAM,KAGpC42B,EAAU3f,MAEV,IAAI4f,EAAU,GAEVD,GAAaA,EAAUx2B,OAAS,IAClCy2B,EAAO,UAAMD,EAAUj2B,KAAK,KAArB,MAGT5B,EAAS,YAAD,OAAaP,GAAb,oBAAkCqC,EAAAA,EAAAA,IAAgBg2B,IAC3D,CAEDh4B,GAASgxB,EAAAA,EAAAA,KAAqB,IAC9BvB,GAAmB,IAEfqI,GACF93B,GAASoyB,EAAAA,EAAAA,KAAsB,GAElC,EAWK6F,GAA8B,CAClC,CACEvqB,KAAM,OACN7I,MAAO,OACPvC,QAvca,SAAC41B,GAChBzI,GAAmB,IAEnB,IAAM0I,EAAO,mBAAex4B,GAAf,kBACXu4B,EAAS,YAAOl2B,EAAAA,EAAAA,IAAgBk2B,IAAvB,IAEXh4B,EAASi4B,GAETn4B,GAASgxB,EAAAA,EAAAA,KAAqB,IAC9BhxB,GAASoiB,EAAAA,EAAAA,KAAmB,IAC5BpiB,GACEiyB,EAAAA,EAAAA,IAAsB,GAAD,OAChBiG,EAAS,WAAMl2B,EAAAA,EAAAA,IAAgBk2B,IAAtB,KAGjB,EAybGE,YAAY,IAIV3W,GAAqB,CACzB,CACE/M,OApFqB,WACvB,GAA+B,IAA3B8a,GAAgBjuB,OAAc,CAChC,IAAI82B,EAAsC,GAS1C,GAA+B,KAJ/BA,EAAkB/O,GAAgBloB,QAHX,SAACsf,GAAD,OACrB8O,GAAgB5N,SAASlB,EAAU5U,KADd,KAOHvK,QAEhB82B,EAAgB,GAAGvsB,KAAKvK,OAAS,MACjCogB,EAAAA,EAAAA,MAActT,cAAcuT,SAAS,OAGrC,YADA6O,GAAuB4H,EAAgB,IAK3CA,EAAgBtF,SAAQ,SAACuF,IAjcN,SAAC5W,GACtB,IAAMtF,GAAmBpa,EAAAA,EAAAA,IAAgB,GAAD,OACnCrC,GADmC,YACrB+hB,EAAO5V,KADc,aACN,IAAI1D,MAAOiU,UADL,YACkBC,KAAKC,WAGzDC,GAAKC,EAAAA,GAAAA,IAAO,GAEZC,GAAeC,EAAAA,EAAAA,IACnBhd,IACAqC,EAAAA,EAAAA,IAAgB0f,EAAO5V,MACvB4V,EAAO9R,WACP8R,EAAOtI,KACP,KACAoD,GACA,SAACI,GACC5c,GACE6c,EAAAA,EAAAA,IAAe,CACbC,WAAYV,EACZQ,SAAUA,IAGf,IACD,WACE5c,GAAS+c,EAAAA,EAAAA,IAAeX,GACzB,IACD,SAACY,GACChd,GAASid,EAAAA,EAAAA,IAAW,CAAEH,WAAYV,EAAkBY,IAAAA,IACrD,IACD,WACEhd,GAASkd,EAAAA,EAAAA,IAAmBd,GAC7B,KAEHe,EAAAA,GAAAA,IAAyBX,EAAIE,GAC7B1c,GACEod,EAAAA,EAAAA,IAAa,CACXZ,GAAAA,EACA7c,WAAAA,GACA0d,MAAM,EACNP,WAAYV,EACZkB,WAAY,EACZC,OAAQmE,EAAO5V,KACf4B,KAAM,WACN8P,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACXzC,aAAc,KAGnB,CAkZK4G,CAAeyW,EAChB,GACF,CACF,EA4DGzzB,MAAO,WACPF,UAAWkzB,IAA0C,IAA3BrI,GAAgBjuB,OAC1C2C,MAAM,SAAC,MAAD,IACNO,QAASozB,GACL,qBACAnzB,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,eACD,sCAGR,CACE0T,OAhMc,WAChB,GAA+B,IAA3B8a,GAAgBjuB,OAAc,CAChC,IAAIg3B,GAKJA,EAAajP,GAAgBlJ,MAHR,SAACM,GAAD,OACnB8O,GAAgB5N,SAASlB,EAAU5U,KADhB,OAMnB6jB,GAAmB4I,GACnB5Z,IAAsB,GAEzB,CACF,EAmLG9Z,MAAO,QACPF,SAAqC,IAA3B6qB,GAAgBjuB,SAAiB2uB,GAC3ChsB,MAAM,SAAC,MAAD,IACNO,QAASyrB,GAAe,sBAAwB,uBAElD,CACExb,OAvNgB,WAClB,GAA+B,IAA3B8a,GAAgBjuB,OAAc,CAChC,IAAIg3B,GAKJA,EAAajP,GAAgBlJ,MAHR,SAACM,GAAD,OACnB8O,GAAgB5N,SAASlB,EAAU5U,KADhB,OAMnB6jB,GAAmB4I,GACnB1Y,IAAe,GAElB,CACF,EA0MGhb,MAAO,UACPF,SAAqC,IAA3B6qB,GAAgBjuB,SAAiB6uB,GAC3ClsB,MAAM,SAAC,MAAD,IACNO,QAAS2rB,GAAiB,wBAA0B,uBAEtD,CACE1b,OAAQ,WACN+Z,IAAsB,EACvB,EACD5pB,MAAO,SACPX,MAAM,SAACunB,GAAD,IACN9mB,UACG6c,IAAwC,IAA3BgO,GAAgBjuB,SAAiB0vB,GACjDxsB,QAAS+c,GACL,yBACA9c,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAAA,kBACD,mCAKV,OACE,UAAC,EAAAiB,SAAD,WACGyc,IAAsBgR,KACrB,SAAC,GAAD,CACE1pB,KAAM0Y,GACNpR,qBAnNgB,WACtBqR,IAAsB,GACtBgR,GAAmB,KACpB,EAiNOhwB,WAAYA,GACZsiB,WAAY,CACVnW,KAAM4jB,GAAgB5jB,KACtBiS,cAAe,GACfnO,WAAY8f,GAAgB9f,cAIjC4e,KACC,SAAC9C,GAAD,CACEjb,WAAY+d,GACZ9d,eAAgB/Q,GAChB6vB,gBAAiBA,GACjBhf,2BA3lBmC,SAACgoB,GAC1C/J,IAAsB,GAElB+J,IACFx4B,GAASsE,EAAAA,EAAAA,IAAmB,kCAC5BmrB,GAAmB,IACnBzvB,GAASoyB,EAAAA,EAAAA,KAAsB,IAElC,EAolBOzhB,WAAYqe,KAGfM,KACC,SAAC3D,GAAD,CACE3lB,KAAMspB,GACNhiB,qBAtNiB,WACvBiiB,IAAgB,EACjB,EAqNO5vB,WAAYA,KAGfigB,KACC,SAAC,GAAD,CACE5Z,KAAM4Z,GACNjgB,WAAYA,GACZ+hB,OAAQgO,GACRjN,eA3NmB,WACzB5C,IAAe,GACf8P,GAAmB,KACpB,MA2NMa,KACD,SAAC,GAAD,CACExqB,OAAQwqB,GACRzU,WAlGiB,WACvB0U,GAAuB,KACxB,EAiGOtY,aAAa,UAAAqY,GAAoB1kB,KAAK3K,MAAM,YAA/B,eAAqCiX,QAAS,GAC3DzY,WAAYA,GACZC,cAAeA,GACfoS,WAAY,CACVlG,KAAM0kB,GAAoB1kB,KAC1BiS,cAAe,GACfnO,WAAY4gB,GAAoB5gB,WAChCwJ,KAAMoX,GAAoBpX,KAAK1W,eAIrC,UAAC+1B,EAAA,EAAD,CAAYp0B,QAAS,OAArB,WACE,SAACpB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+nB,qBAAtC,UACE,SAAC8C,EAAA,EAAD,CACEroB,UAAWxC,EAAQqsB,YACnB7nB,MACE,iBAAMhC,UAAWxC,EAAQ8qB,SAAzB,UACE,SAAC,MAAD,MAGJhf,OAAO,iBAAMtJ,UAAWxC,EAAQ+qB,YAAzB,SAAuC9qB,KAC9C+qB,UACE,SAAC,EAAAzoB,SAAD,WACE,UAACgB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQirB,cAAtC,WACE,kBAAMzoB,UAAWxC,EAAQkrB,cAAzB,kCAEE,6BAAmB,OAAVmD,QAAU,IAAVA,OAAA,EAAAA,EAAY2K,gBAAiB,SAExC,kBAAMx2B,UAAWxC,EAAQkrB,cAAzB,iCAEE,6BAAmB,OAAVmD,QAAU,IAAVA,OAAA,EAAAA,EAAY4K,SAAU,QAEhC5K,IACC,SAAC,EAAA9rB,SAAD,WACE,kBAAMC,UAAWxC,EAAQkrB,cAAzB,UACGmD,EAAW3U,OACV,SAAC,EAAAnX,SAAD,WAAWghB,EAAAA,EAAAA,IAAa8K,EAAW3U,QAEpC2U,EAAW3U,MAAQkX,KAClB,UAAC,EAAAruB,SAAD,kBAAcghB,EAAAA,EAAAA,IAAaqN,GAAMA,UAElCvC,EAAW3U,MAAQ2U,EAAW6E,QAAU,MAAQ,GAChD7E,EAAW6E,UACV,UAAC,EAAA3wB,SAAD,WACG8rB,EAAW6E,QADd,aAEG7E,EAAW6E,SAAkC,IAAvB7E,EAAW6E,QAC9B,IACA,gBASpB/H,SACE,SAAC,EAAA5oB,SAAD,WACE,iBAAKC,UAAWxC,EAAQk5B,eAAxB,WACE,SAACp0B,EAAA,EAAD,CAAgBC,QAAS,gBAAzB,UACE,SAAC,IAAD,CACER,GAAI,sBACJY,MAAO,SACPX,MACE,SAAC20B,EAAA,EAAD,CACEC,aAAa,IACbv0B,MAAM,YACNF,QAAQ,MACR00B,WAAY34B,EACZ8B,UAAWxC,EAAQosB,aACnBxoB,GAAI,CAAEM,OAAQ,IANhB,UAQE,SAAC2nB,GAAD,CACEppB,MAAO,CACLmF,SAAU,GACVsN,UAAW,GACXjR,MAAO,GACPC,OAAQ,GACRQ,WAAY,OAKpBC,QAAS,UACT/B,QAAS,WACPitB,IAAgB,EACjB,EACD5qB,UACGqqB,MACAjuB,EAAAA,EAAAA,GAAcpB,GAAY,CAACqB,EAAAA,GAAAA,qBAIlC,SAACwD,EAAA,EAAD,CAAgBC,QAAS,cAAzB,UACE,SAAC,IAAD,CACER,GAAI,uBACJY,MAAO,UACPX,MAAM,SAACsnB,GAAD,IACNnnB,QAAS,UACT/B,QAAS,WAELtC,EADES,GACO2hB,EAAAA,EAAAA,KAAmB,IAEnBgQ,EAAAA,EAAAA,KAAsB,GAElC,EACDztB,WACG5D,EAAAA,EAAAA,GAAcpB,GAAY,CACzBqB,EAAAA,GAAAA,kBACIZ,OAIZ,kBACEsN,KAAK,OACLsrB,UAAQ,EACRjtB,SAAU2nB,GACVvxB,MAAO,CAAEyK,QAAS,QAClB5D,IAAK4nB,MAEP,kBACEljB,KAAK,OACLsrB,UAAQ,EACRjtB,SAAU2nB,GACVvxB,MAAO,CAAEyK,QAAS,QAClB5D,IAAK6nB,MAEP,SAAC,EAAD,CACElxB,WAAYA,GACZqF,WAAYA,GAAWlD,KAAK,KAC5BoD,mBAAoB,SAAC+zB,GACfrI,IAAcA,GAAW/hB,SAC3B+hB,GAAW/hB,QAAQqqB,QAErBD,GACD,EACD9zB,qBAAsB,SAAC8zB,GACjBpI,IAAgBA,GAAahiB,SAC/BgiB,GAAahiB,QAAQqqB,QAEvBD,GACD,cAOb,iCACEh1B,GAAG,uBACC+yB,GAAa,CAAE70B,OAAM,UAAMi1B,OAFjC,eAIE,4BAAWH,QACX,UAACh0B,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,UAAWxC,EAAQy5B,WACnB71B,GAAI,CAAEC,OAAQ,oBAAqB61B,UAAW,GAJhD,UAMG34B,GACC,SAAC,EAAAwB,SAAD,UAC6B,OAA1BwrB,IACC,SAAC,GAAD,CACE7tB,cAAe6tB,EACf9tB,WAAYA,QAKlB,SAAC8Y,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,gBACT2X,SAAUhZ,GACVqZ,WAAY,CAAErU,UAAU,GAH1B,UAKE,UAAC1B,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ4sB,cAAtC,WACE,SAACrpB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ0sB,qBAAtC,UACE,SAAC,EAAD,CACEzsB,WAAYA,GACZC,cAAe03B,GACfz3B,cAAeyuB,GAAW,GAC1BvuB,mBACGivB,IAAe5uB,EAAgB,MAC9B,0BACE,SAACsmB,GAAA,EAAD,CACE5a,KAAM,kBACN7H,GAAI,qBACJ4D,MAAO,aACPhD,MAAO,uBACPkH,SApSH,WACvB/L,GAASq5B,EAAAA,EAAAA,KAAuB/L,IAChC9O,IAAa,EACd,EAkS2B3S,QAASyhB,EACTgM,qBAAsB55B,EAAQysB,WAC9BjqB,UAAWxC,EAAQ65B,oBACnB1S,aAAW,MAKnB/mB,gBAAgB,OAGpB,SAAC05B,EAAA,EAAD,CACEC,YAAaxB,GACbyB,QACEt5B,EAAgB+jB,GAAoBN,GAEtCrS,UAAWkc,EACXkB,eAAgBA,GAChB+K,WAAW,UACXC,QAAQ,OACRtL,QAASoJ,GACTmC,kBAAiB,UAAKn6B,EAAQksB,YAAb,YACfyC,EAAS,aAAe,GADT,YAEbd,EAAc,mBAAqB,IACvC5E,cAAe6G,GACfsK,SAnbQ,SAAC9tB,GACzB,IAAM+tB,EAAU/tB,EAAEC,OACZpE,EAAQkyB,EAAQlyB,MAChBgE,EAAUkuB,EAAQluB,QAEpBmuB,GAAkB,OAAOxK,IAY7B,OAVI3jB,EAEFmuB,EAAS/P,KAAKpiB,GAGdmyB,EAAWA,EAAS54B,QAAO,SAAC+R,GAAD,OAAaA,IAAYtL,CAAzB,IAE7B4nB,GAAmBuK,GACnBh6B,GAASiyB,EAAAA,EAAAA,IAAsB,OAExB+H,CACR,EAkaiBC,mBAAkB,gCACf75B,EAAsD,GAAtC,qCAEnB85B,WAAY,CACVC,YAAarK,GACbsK,iBAAkBxK,GAClByK,YAtaD,SAACC,GAClB,IAAMC,EAAmBpoB,IAAImoB,EAAU,gBAAiB,QACxDvK,GAAoBuK,EAASE,QAC7B3K,GAAiB0K,GACjBv6B,GAASoyB,EAAAA,EAAAA,KAAsB,GAChC,GAmaiBqI,YAnZK,WAGrB,GAFAz6B,GAASiyB,EAAAA,EAAAA,IAAsB,OAE3BzC,GAAgBjuB,SAAWm2B,GAAQn2B,OAAvC,CAKA,IAAMy4B,EAAWtC,GAAQj2B,KAAI,SAACyB,GAAD,OAAUA,EAAK4I,IAAf,IAC7B2jB,GAAmBuK,EAHlB,MAFCvK,GAAmB,GAMtB,EA0YiBiL,SAAU,YAAgB,IAAD,EAAZ/4B,EAAY,EAAZA,MACX,iBAAI+1B,GAAQ/1B,UAAZ,OAAI,EAAgBg5B,YACX,UAGF,EACR,EACDC,gBAAiBl7B,EAAQ2sB,sBAKjC,SAAC5T,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,gBACT2X,SAAUhZ,GACVqZ,WAAY,CAAErU,UAAU,GAH1B,UAKE,UAAC,EAAD,CACEqB,KAAMunB,EACN/lB,WAAY,WACVgX,IAAa,EACd,EACDtc,UAAS,UAAKzB,EAAef,EAAQ6sB,gBAAkB,IALzD,UAOGiD,GAAgBjuB,OAAS,IACxB,SAAC,GAAD,CACE+S,MAAOmN,GACPjW,MAAO,sBAGgB,OAA1BiiB,IACC,SAAC,GAAD,CACE7tB,cAAe6tB,EACf9tB,WAAYA,GACZ6e,aAAcA,GACd7N,WAAYqe,GACZzQ,QAAS6Q,sBAU5B,E,wECh6CD,IAAehwB,EAAAA,EAAAA,IA3JA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,WACRuc,EAAAA,EAAAA,IAAmBxc,EAAMyc,QAAQ,KAFzB,GA2Jf,EAtJuB,WACrB,IAAM9b,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MACX2sB,GAASC,EAAAA,EAAAA,MACTC,GAAWC,EAAAA,EAAAA,MAEXxsB,GAAeJ,EAAAA,EAAAA,KACnB,SAACC,GAAD,OAAqBA,EAAMC,cAAcE,YAAzC,IAEI4sB,GAAgBhtB,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAc8sB,aAAzC,IAEI3sB,GAAgBL,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMC,cAAcG,aAAzC,IAEIqnB,GAAiB1nB,EAAAA,EAAAA,KACrB,SAACC,GAAD,OAAqBA,EAAMC,cAAcwnB,cAAzC,IAGIoG,GAAW9tB,EAAAA,EAAAA,IAAY+tB,GAAAA,IAEvBzuB,EAAamtB,EAAOntB,YAAc,GAClC+wB,EAAc1D,EAAS2D,SAASxvB,MAAM,YAEtCvB,EAAuC,IAAvB8wB,EAAYnvB,OAAemvB,EAAY,GAAK,GAE5DrC,IAAU,OAACF,QAAD,IAACA,IAAAA,EAAUvM,SAAS,yBAEpC9X,EAAAA,EAAAA,YAAU,WACR9J,GAASuC,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,IAC3C,GAAE,CAAC5C,EAAeI,IAEnB,IAIM66B,GAAyB95B,EAAAA,GAAAA,GAAcpB,EAAY,CACvDqB,EAAAA,GAAAA,qBACAA,EAAAA,GAAAA,qBACAA,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,uCACAA,EAAAA,GAAAA,uCACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,iCACAA,EAAAA,GAAAA,iCACAA,EAAAA,GAAAA,+BACAA,EAAAA,GAAAA,+BACAA,EAAAA,GAAAA,uBACAA,EAAAA,GAAAA,uBACAA,EAAAA,GAAAA,sBACAA,EAAAA,GAAAA,sBACAA,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,0BAGI85B,GACJ,SAAC,EAAA74B,SAAD,UACIxB,GAeA,SAAC,EAAAwB,SAAD,WACE,SAAC84B,GAAA,EAAD,CACEvhB,YAAW,6CAAwC9Y,GACnDqL,SAAU,SAAClE,GACT7H,GAASg7B,EAAAA,EAAAA,IAAkBnzB,GAC5B,EACDA,MAAOkgB,OApBX,SAACtP,EAAA,EAAD,CACEC,OAAQ,CAAC1X,EAAAA,GAAAA,gBACT2X,SAAUhZ,EACVqZ,WAAY,CAAErU,UAAU,GAH1B,UAKE,SAACo2B,GAAA,EAAD,CACEvhB,YAAa,+CACbzN,SAAU,SAAClE,GACT7H,GAASmyB,EAAAA,EAAAA,IAAiBtqB,GAC3B,EACDA,MAAOwlB,QAiBjB,OACE,UAAC,EAAAprB,SAAD,WACIosB,GAsCA,UAACprB,EAAA,GAAD,CACEiI,WAAS,EACT5H,GAAI,CACF2Q,QAAS,eAHb,WAME,SAAChR,EAAA,GAAD,WACE,SAACg4B,GAAA,EAAD,CAAep3B,YAAa,GAAIO,UAAW,QAE7C,SAACnB,EAAA,GAAD,CAAMC,MAAI,EAACC,IAAE,EAAb,SACG23B,QA/CL,SAACI,GAAA,EAAD,CACEr2B,OAAO,SAACs2B,GAAA,EAAD,CAAUt2B,MAAO,UAAWxC,GAAI+4B,EAAAA,GAAAA,UACvCvQ,SACE,SAACpS,EAAA,EAAD,CACEC,OAAQ2iB,EAAAA,EAAgBC,EAAAA,GAAAA,cACxB3iB,SAAUhZ,EACVqZ,WAAY,CAAErU,UAAU,GAH1B,UAKE,SAACH,EAAA,EAAD,CACEC,QACEo2B,EACI,mBACA,yHACAS,EAAAA,GAAAA,aACA,eANR,UASE,SAAC,IAAD,CACEr3B,GAAI,wBACJM,MAAM,UACN,aAAW,mBACXjC,QAjFgB,WAC9BpC,EAAS,YAAD,OAAaP,EAAb,UACT,EAgFeuE,MACE,SAACq3B,GAAA,EAAD,CACEp5B,MAAO,CAAEwB,MAAO,GAAIC,OAAQ,GAAIQ,WAAY,KAGhDjC,MAAO,CACL8R,QAAS,gBAMnBunB,gBAAiBV,KAiBrB,SAAC73B,EAAA,GAAD,WACE,SAAC,GAAD,QAIP,G,+TCwFD,GAAe7D,EAAAA,EAAAA,IA9PA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRmN,EAAAA,IACAC,EAAAA,IAFO,IAGVzB,eAAgB,CACd2B,QAAS,OACTC,WAAY,SACZG,aAAc,IAEhBjC,gBAAe,kBACV0B,EAAAA,GAAAA,gBADS,IAEZG,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBC,cAAe,GACf3I,UAAW,GACX4I,aAAc,IAEhByuB,mBAAoB,CAClBh8B,OAAQ,UAEVi8B,eAAgB,CACd9uB,QAAS,OACTC,WAAY,SACZC,eAAgB,cAGlB6uB,kBAAmB,CACjB/uB,QAAS,OACTC,WAAY,SACZC,eAAgB,aAChB1I,UAAW,GACXiD,WAAY,IAEdu0B,oBAAqB,CACnBx3B,UAAW,GACXwI,QAAS,OACTrI,MAAO,MACPqE,SAAU,IAEZizB,aAAc,CACZjjB,SAAU,cACV,YAAa,CACX1E,WAAY,IACZ7M,WAAY,GACZxD,YAAa,KAGjBi4B,aAAc,CACZlzB,SAAU,GACVxE,UAAW,GACXwI,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChB,4BAA6B,CAC3B8L,SAAU,UAEZ,gBAAiB,CACfrU,MAAO,UACPZ,MAAO,GACPC,OAAQ,GACRC,YAAa,KAGjBk4B,UAAW,CACT7nB,WAAY,OACZ7M,WAAY,MAlEH,GA8Pf,EA5KqB,SAAC,GAQA,IAPpB3H,EAOmB,EAPnBA,QACAuE,EAMmB,EANnBA,GACA+3B,EAKmB,EALnBA,YACAn3B,EAImB,EAJnBA,MACAo3B,EAGmB,EAHnBA,QACAC,EAEmB,EAFnBA,OACAnwB,EACmB,EADnBA,SAEA,GAAwCpL,EAAAA,EAAAA,UAAiB,GAAzD,eAAOw7B,EAAP,KAAqBC,EAArB,KACA,GAA0Cz7B,EAAAA,EAAAA,UAAiB,GAA3D,eAAO07B,EAAP,KAAsBC,EAAtB,KACA,GAA8C37B,EAAAA,EAAAA,UAAiB,GAA/D,eAAO47B,EAAP,KAAwBC,EAAxB,KACA,GAAkC77B,EAAAA,EAAAA,WAAkB,GAApD,eAAOgK,EAAP,KAAkB8xB,EAAlB,KACA,GAAwC97B,EAAAA,EAAAA,UAAwB+7B,OAAhE,eAAOC,EAAP,KAAqBC,EAArB,MAEA9yB,EAAAA,EAAAA,YAAU,WACR8yB,EA5BqB,SACvBZ,EACAl0B,EACA+0B,EACAC,GAEA,OAAOJ,IAAOV,GACXe,IAAIj1B,EAAM,QACVi1B,IAAIF,EAAO,SACXE,IAAID,EAAS,UACjB,CAmBKE,CACEhB,EACAG,EACAE,EACAE,GAGL,GAAE,CAACP,EAAaG,EAAcE,EAAeE,KAE9CzyB,EAAAA,EAAAA,YAAU,WACJa,EACFoB,EAAS4wB,EAAaM,OAAO,wBAAwB,GAErDlxB,EAAS,cAAc,EAE1B,GAAE,CAAC4wB,EAAc5wB,EAAUpB,KAG5Bb,EAAAA,EAAAA,YAAU,WACR,IAAIozB,GAAQ,GAEVf,EAAe,GACdF,GAAWE,EAAeF,GAC3B9xB,MAAMgyB,MAENe,GAAQ,IAGNb,EAAgB,GAAKA,EAAgB,IAAMlyB,MAAMkyB,MACnDa,GAAQ,IAGNX,EAAkB,GAAKA,EAAkB,IAAMpyB,MAAMoyB,MACvDW,GAAQ,IAIRjB,GACAE,IAAiBF,GACE,IAAlBI,GAA2C,IAApBE,IAExBW,GAAQ,GAGVT,EAAaS,EACd,GAAE,CACDP,EACAV,EACAlwB,EACAowB,EACAE,EACAE,IAGF,IAAMY,EAAkB,CACtBh7B,MAAO,CACL4e,UAAW,SACXkL,aAAc,GACd5e,YAAa,GACb1J,MAAO,IAETzB,UAAW,gBAGb,OACE,SAAC,EAAAD,SAAD,WACE,UAACgB,EAAA,GAAD,CAAMiI,WAAS,EAAChJ,UAAWxC,EAAQqL,eAAnC,WACE,SAAC9H,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQuL,eAAtC,UACE,SAACE,EAAA,EAAD,CACEC,QAASnH,EACT/B,UAAWxC,EAAQ2L,WACnB/H,GAAI,CAAE+D,WAAY,QAHpB,UAKE,0BAAOxC,SAGX,UAAC5B,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQg8B,eAAtC,WACE,SAACz4B,EAAA,GAAD,CAAMC,MAAI,EAAChB,UAAWxC,EAAQ+7B,mBAA9B,UACE,SAACliB,EAAA,EAAD,CACEtV,GAAIA,EACJ/B,UAAWxC,EAAQm8B,aACnBnuB,KAAK,SACL0vB,IAAI,IACJC,IAAKpB,EAAUA,EAAQv5B,WAAa,MACpCmC,MAAM,OACNiH,KAAM7H,EACN8H,SAAU,SAACC,GACTowB,EAAgBpyB,SAASgC,EAAEC,OAAOpE,OACnC,EACDA,MAAOs0B,EAAaz5B,WACpBy6B,gBAAiBA,EACjBG,iBAAe,OAGnB,SAACr6B,EAAA,GAAD,CAAMC,MAAI,EAAChB,UAAWxC,EAAQ+7B,mBAA9B,UACE,SAACliB,EAAA,EAAD,CACEtV,GAAIA,EACJ/B,UAAWxC,EAAQm8B,aACnBnuB,KAAK,SACL0vB,IAAI,IACJC,IAAI,KACJx4B,MAAM,QACNiH,KAAM7H,EACN8H,SAAU,SAACC,GACTswB,EAAiBtyB,SAASgC,EAAEC,OAAOpE,OACpC,EACDA,MAAOw0B,EAAc35B,WACrBy6B,gBAAiBA,EACjBG,iBAAe,OAGnB,SAACr6B,EAAA,GAAD,CAAMC,MAAI,EAAChB,UAAWxC,EAAQ+7B,mBAA9B,UACE,SAACliB,EAAA,EAAD,CACEtV,GAAIA,EACJ/B,UAAWxC,EAAQm8B,aACnBnuB,KAAK,SACL0vB,IAAI,IACJC,IAAI,KACJx4B,MAAM,UACNiH,KAAM7H,EACN8H,SAAU,SAACC,GACTwwB,EAAmBxyB,SAASgC,EAAEC,OAAOpE,OACtC,EACDA,MAAO00B,EAAgB75B,WACvBy6B,gBAAiBA,EACjBG,iBAAe,UAIrB,SAACr6B,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,UAAS,UAAKxC,EAAQi8B,kBAAb,YAAkCj8B,EAAQ2P,cAHrD,SAKG1E,GACC,iBAAKzI,UAAWxC,EAAQo8B,aAAxB,WACE,SAAC,MAAD,KACA,iBAAK55B,UAAWxC,EAAQ69B,cAAxB,UACGrB,EADH,+BAEO,KACP,gBAAKh6B,UAAWxC,EAAQq8B,UAAxB,SACGY,EAAaM,OAAO,6BAIzB,gBAAK/6B,UAAWxC,EAAQk8B,oBAAxB,mDAQX,I,iCCnPK4B,EAAWr+B,EAAAA,MAAW,kBAAM,uCAAN,IA2O5B,GAAeC,EAAAA,EAAAA,IAzOA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,gBACXm+B,cAAe,CACb70B,SAAU,GACVsL,WAAY,KAEdwpB,cAAe,CACb9wB,QAAS,OACT,4BAA6B,CAC3BgM,SAAU,SACV/L,WAAY,SACZC,eAAgB,WAGpB6wB,mBAAoB,CAClB,oBAAqB,CACnBv5B,UAAW,GAEb,4BAA6B,CAC3BkD,SAAU,MAGds2B,iBAAkB,CAChBhxB,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChB,4BAA6B,CAC3B1I,UAAW,MAGZ8I,EAAAA,IACAD,EAAAA,IA/BQ,GAyOf,EA/LkB,SAAC,GAMK,IALtBvN,EAKqB,EALrBA,QACAsG,EAIqB,EAJrBA,KACAsH,EAGqB,EAHrBA,qBACA3N,EAEqB,EAFrBA,WACAsiB,EACqB,EADrBA,WAEMjiB,GAAWC,EAAAA,EAAAA,MACXiX,GAAmB7W,EAAAA,EAAAA,IAAY8W,EAAAA,IACrC,GAAgCxW,EAAAA,EAAAA,UAAiB,IAAjD,eAAOk9B,EAAP,KAAiBC,EAAjB,KACA,GAAgDn9B,EAAAA,EAAAA,WAAkB,GAAlE,eAAOo9B,EAAP,KAAyBC,EAAzB,KACA,GAA0Cr9B,EAAAA,EAAAA,WAAkB,GAA5D,eAAOs9B,EAAP,KAAsBC,EAAtB,KACA,GAAwCv9B,EAAAA,EAAAA,UAAiB,IAAzD,eAAOw9B,EAAP,KAAqBC,EAArB,KACA,GAAkCz9B,EAAAA,EAAAA,WAAkB,GAApD,eAAO09B,EAAP,KAAkBC,EAAlB,KACA,GAAkC39B,EAAAA,EAAAA,UAAiB,QAAnD,eAAO0jB,EAAP,KAAkBka,EAAlB,KAEMvC,EAAc,IAAI5zB,KAmGxB,OAvFA0B,EAAAA,EAAAA,YAAU,WAER,QAA8BlE,IAA1Bqc,EAAWrS,WAEb,OAAIsH,GACFpH,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,4BAGoDqC,EAAAA,EAAAA,IAC9CigB,EAAWnW,OAJjB,OAKQoL,EAAmB,sBAAwB,KAEhDjH,MAAK,SAACC,GACL,IAEMsuB,EAFSrsB,IAAIjC,EAAK,UAAW,IAENkQ,MAC3B,SAACqe,GAAD,OAAqBA,EAAK3gB,SAA1B,IAIAygB,EADEC,EACWA,EAAc5uB,WAKhB,OACd,IACAO,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,GACpC,SAEH4tB,GAAoB,KAGtBO,EAAa,aACbP,GAAoB,IAGtBO,EAAatc,EAAWrS,YAAc,QACtCouB,GAAoB,EACrB,GAAE,CAACr+B,EAAYsiB,EAAY/K,EAAkBlX,KAE9C8J,EAAAA,EAAAA,YAAU,WACR,GAAIu0B,IAAcN,EAAkB,CAClCG,GAAiB,GACjBJ,EAAY,IAEZ,IAAMY,EAAS,IAAIt2B,KAAJ,UAAY+1B,IACrBQ,EAAW,IAAIv2B,KAEfw2B,EAAWtiB,KAAKsV,MACnB8M,EAAOriB,UAAYsiB,EAAStiB,WAAa,KAGxCuiB,EAAW,GACb9uB,EAAAA,EAAAA,OAEI,MAFJ,0BAGuBnQ,EAHvB,kCAG0DqC,EAAAA,EAAAA,IACpDigB,EAAWnW,MAJjB,uBAKoBuY,GALpB,OAMuB,KAAjB8Z,EAAA,mBAAkCS,EAAlC,KAAgD,KAGnD3uB,MAAK,SAACC,GACL4tB,EAAY5tB,GACZguB,GAAiB,EAClB,IACA/tB,OAAM,SAACC,GACNpQ,GAASqQ,EAAAA,EAAAA,IAA0BD,IACnC0tB,EAAY,IACZI,GAAiB,EAClB,GAEN,CACF,GAAE,CACDjc,EACAkc,EACAx+B,EACA0+B,EACAP,EACA99B,EACAkX,EACA6mB,EACA1Z,KAIA,SAAC,WAAD,WACE,UAACtV,EAAA,EAAD,CACEvD,MAAM,aACN+F,WAAW,SAAC,MAAD,CAAWpP,MAAO,CAAEgC,KAAM,aACrCrB,UAAWkD,EACXhD,QAAS,WACPsK,GACD,EANH,UAQGywB,IACC,SAAC96B,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACmnB,EAAA,EAAD,OAGFyT,IACA,UAAC,EAAA97B,SAAD,YACE,UAACgB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ+9B,cAAtC,oHAGE,mBACA,kBAJF,iEAOA,mBACA,SAACx6B,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQm/B,cAAtC,UACE,SAAC,EAAD,CACE7C,YAAaA,EACb/3B,GAAG,OACHY,MAAM,aACNo3B,QAAS,EACTlwB,SAhIM,SAAC+yB,EAAiBl0B,GACpC0zB,EAAa1zB,GACTA,EACFwzB,EAAgBU,IAGlBV,EAAgB,IAChBN,EAAY,IACb,EAyHa5B,OAAO,YAGX,SAACj5B,EAAA,GAAD,CACEC,MAAI,EACJC,GAAI,GACJjB,UAAS,UAAKxC,EAAQg+B,cAAb,YAA8Bh+B,EAAQ2P,aAAtC,KAHX,UAKE,SAACpM,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQi+B,mBAAtC,UACE,SAACoB,EAAA,EAAD,CACEzZ,QAASuY,EACTmB,cACE,SAAC,IAAD,CAAiBh7B,KAAM65B,EAAvB,UACE,SAAC,IAAD,CACE55B,GAAI,YACJI,QAAQ,UACR/B,QAAS,WACPtC,GACEi/B,EAAAA,EAAAA,IACE,iCAGL,EACDt6B,SAAuB,KAAbk5B,GAAmBI,EAC7B97B,MAAO,CACL0B,YAAa,MACbF,MAAO,OACPC,OAAQ,OACRqQ,QAAS,OAEX/P,MAAM,SAACs5B,EAAD,qBAY7B,G,4MC9GD,GAAep+B,EAAAA,EAAAA,IAhJA,kBACbE,EAAAA,EAAAA,GAAa,CACX4/B,gBAAiB,CACf37B,OAAQ,MACRoJ,KAAM,WACNhJ,MAAO,OACPC,OAAQ,IACRJ,gBAAiB,cACjBE,aAAc,EAEd,UAAW,CACTE,OAAQ,KAEV,SAAU,CACRA,OAAQ,KAEV,UAAW,CACTA,OAAQ,KAEV,UAAW,CACTA,OAAQ,KAEV,eAAgB,CACdA,OAAQ,wBAGZu7B,WAAY,CACV37B,gBAAiB,QAEnB47B,aAAc,CACZxyB,QAAS,SA9BA,GAgJf,EAvGoB,SAAC,GAKK,IAJxBjN,EAIuB,EAJvBA,WACA+hB,EAGuB,EAHvBA,OAGuB,IAFvB2d,aAAAA,OAEuB,SADvB3/B,EACuB,EADvBA,QAEA,GAA8BiB,EAAAA,EAAAA,WAAkB,GAAhD,eAAO+sB,EAAP,KAAgB4R,EAAhB,KAEIj+B,EAAO,GAEX,GAAIqgB,EAAQ,CACV,IAAM2S,GAAcryB,EAAAA,EAAAA,IAAgB0f,EAAO5V,MACvCyzB,EAAWC,SAASC,QAAQC,QAAQC,OAAO3S,SAAS4S,OAAQ,IAChEv+B,EAAI,UAAMs+B,OAAO3S,SAAS4S,QAAtB,OAA+BL,EAA/B,0BAAyD5/B,EAAzD,iDAA4G00B,GAC5G3S,EAAO9R,aACTvO,EAAOA,EAAKu2B,OAAL,sBAA2BlW,EAAO9R,aAE5C,CAED,IAAMiwB,GAAa9d,EAAAA,EAAAA,KAAuB,OAANL,QAAM,IAANA,OAAA,EAAAA,EAAQ5V,OAAQ,IAE9Cg0B,EAAe,WACnBR,GAAW,EACZ,EAED,OACE,UAAC,EAAAr9B,SAAD,WACGyrB,IACC,SAACzqB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACmnB,EAAA,EAAD,OAGJ,iBAAKnoB,MAAO,CAAE4e,UAAW,UAAzB,UACkB,UAAf8e,IACC,kBACE19B,MAAO,CACLwB,MAAO,OACPC,OAAQ,OACRuhB,SAAU,sBACV4a,UAAW,uBAEbC,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,aAAa,EACbC,OAAQN,EAXV,UAaE,mBAAQO,IAAKh/B,EAAMqM,KAAK,gBAGZ,UAAfmyB,IACC,kBACE19B,MAAO,CACLwB,MAAO,OACPC,OAAQ,QAEVo8B,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,aAAa,EACbC,OAAQN,EATV,UAWE,mBAAQO,IAAKh/B,EAAMqM,KAAK,iBAGZ,UAAfmyB,IACC,gBACE19B,MAAO,CACLwB,MAAO,OACPC,OAAQ,OACRuhB,SAAU,QACV4a,UAAW,SAEbM,IAAKh/B,EACLi/B,IAAK,UACLC,OAAQT,IAGI,UAAfD,GACgB,UAAfA,GACe,UAAfA,IACE,gBACE39B,WAAW4I,EAAAA,EAAAA,GAAKpL,EAAQy/B,YAAT,UACZz/B,EAAQ0/B,aAAe1R,IAF5B,UAKE,mBACE2S,IAAKh/B,EACLmK,MAAM,eACNg1B,mBAAiB,EACjBt+B,UAAS,UAAKxC,EAAQw/B,gBAAb,YACPG,EAAe,aAAeQ,GAEhCU,OAAQT,EAPV,yEAgBb,I,WCtHD,EArByB,SAAC,GAKA,IAJxB95B,EAIuB,EAJvBA,KACArG,EAGuB,EAHvBA,WACA+hB,EAEuB,EAFvBA,OACAe,EACuB,EADvBA,eAEA,OACE,SAAC,EAAAxgB,SAAD,WACE,SAAC8M,EAAA,EAAD,CACEjM,UAAWkD,EACXwF,MAAK,2BAAekW,QAAf,IAAeA,OAAf,EAAeA,EAAQ5V,MAC5B9I,QAASyf,EACTge,WAAW,EACXlvB,WAAW,SAAC,MAAD,IALb,UAOE,SAACmvB,EAAD,CAAoB/gC,WAAYA,EAAY+hB,OAAQA,OAI3D,C,2JC3BY/E,EAAW,SACtBhd,EACA2kB,EACAD,EACAsc,GAOI,IANJC,EAMG,uDAN+B,KAClC38B,EAKG,uCAJH48B,EAIG,uCAHHC,EAGG,uCAFHC,EAEG,uCADHC,EACG,uCACGC,EAASzB,SAAS0B,cAAc,KACtC1B,SAAS2B,KAAKC,YAAYH,GAC1B,IAAI1B,EAAWC,SAASC,QAAQC,QAAQC,OAAO3S,SAAS4S,OAAQ,IAE5Dv+B,EAAI,UACNs+B,OAAO3S,SAAS4S,QADV,OAELL,EAFK,0BAEqB5/B,EAFrB,oCAE2D2kB,GAF3D,OAGe,OAArBsc,GAAyD,KAA5BA,EAAiBnnB,OAA9C,+BAC2BzX,EAAAA,EAAAA,IAAgB4+B,GAAoB,KAC3D,IAEFvc,IACFhjB,EAAOA,EAAKu2B,OAAL,sBAA2BvT,KAGpC,IAAIgd,EAAM,IAAIvM,eA+Dd,OA9DAuM,EAAIr7B,KAAK,MAAO3E,GAAM,GACtBggC,EAAI7L,iBACF,YACA,SAAU8L,GACR,IAAIC,EAAkBjlB,KAAKklB,MAAOF,EAAI5L,OAASiL,EAAY,KAEvDE,GACFA,EAAiBU,EAEpB,IACD,GAGFF,EAAII,aAAe,OACnBJ,EAAIK,mBAAqB,WACvB,GAAuB,IAAnBL,EAAIM,WACN,GAAmB,MAAfN,EAAI7+B,OAAgB,CACtB,IAAMo/B,EAAYP,EAAIQ,kBAAkB,uBAEpCvmB,EAAW,WACf,GAAIsmB,EAEFtmB,EADuBhI,mBAAmBsuB,GACdzgC,MAAM,KAAK,GAGrC2/B,GACFA,KAGF3L,EAAAA,EAAAA,IAAYlxB,GAEZ,IAAI69B,EAAOtC,SAAS0B,cAAc,KAClCY,EAAKC,KAAOpC,OAAOqC,IAAIC,gBAAgBZ,EAAIjM,UAC3C0M,EAAKnlB,SAAWrB,EAChBkkB,SAAS2B,KAAKC,YAAYU,GAC1BA,EAAK5I,QACLsG,SAAS2B,KAAKe,YAAYJ,EAC3B,KAAM,CACL,GAA8C,qBAA1CT,EAAIQ,kBAAkB,gBAAwC,CAChE,IAAMM,EAAwC9M,KAAKnrB,MACjDm3B,EAAIjM,UAEN,GAAI+M,EAAQ7M,gBAEV,YADAyL,EAAcoB,EAAQ7M,gBAGzB,CACDyL,EAAc,oCAAD,OAAqCM,EAAI7+B,OAAzC,MACd,CAEJ,EACD6+B,EAAIzL,QAAU,WACRmL,GACFA,EAAc,4BAEjB,EACDM,EAAIvL,QAAU,WACRkL,GACFA,GAEH,EAEMK,CACR,EAGYtf,EAAmB,SAC9BpN,GAEA,IA+BIytB,EAAgBztB,EAASxT,MAAM,KAAKiX,MAExC,OAAKgqB,GAILA,EAAgBA,EAAc/zB,cArCN,CACtB,MACA,OACA,OACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,QAyBkBuT,SAASwgB,GACpB,QAxBc,CAAC,MAAO,MAAO,QA2BnBxgB,SAASwgB,GACnB,OA3Be,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,OA8B1CxgB,SAASwgB,GACpB,QA9Be,CACtB,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,QACA,UAuBkBxgB,SAASwgB,GACpB,QAGF,QArBE,MAsBV,EAEY3K,EAAkB,SAAC4K,GAC9B,OAAQA,GACN,IAAK,OACH,OAAO,SAAC3Y,EAAqBC,GAAtB,OACLD,EAAE5d,KAAKw2B,cAAc3Y,EAAE7d,KADlB,EAET,IAAK,gBACH,OAAO,SAAC4d,EAAqBC,GAAtB,OACL,IAAIvhB,KAAKshB,EAAE3L,eAAe1B,UAC1B,IAAIjU,KAAKuhB,EAAE5L,eAAe1B,SAFrB,EAGT,IAAK,OACH,OAAO,SAACqN,EAAqBC,GAAtB,OACJD,EAAEtQ,OAAS,IAAMuQ,EAAEvQ,OAAS,EADxB,EAGZ,EAEYoa,EAAkB,SAC7B7zB,EACA43B,EACAgL,GAEA,GAAgC,IAA5BA,EAAiBhhC,OACnB,OAAO,KAIT,IAAMihC,EAA+BD,EAAiBnhC,QACpD,SAACqhC,GAAD,OACEA,EAAe9pB,SAAS/G,SAAxB,WAAqCjS,KACrC8iC,EAAe9pB,SAASiJ,SAAxB,WAAqCjiB,EAArC,KAFF,IAMF,GAA4C,IAAxC6iC,EAA6BjhC,OAC/B,OAAO,KAGT,IAAMmhC,EAAqC,GAGrCC,EAAmBpL,EAAYp2B,MAAM,KAiF3C,OA/EAqhC,EAA6BzP,SAAQ,SAAC6P,GAIpC,IAKMC,GALWD,EAAkBjqB,SAASxX,MAAM,KAC1BiX,OAAS,IAINjX,MAAM,KAG7B0hC,EAAYthC,OAAS,GACvBshC,EAAYC,OAAM,SAACC,EAAsBphC,GAEvC,MAA6B,MAAzBohC,MAMFJ,EAAiBhhC,IACjBghC,EAAiBhhC,KAAWohC,KAMzBJ,EAAiBhhC,IACpB+gC,EAAezY,KAAK,CAClBne,KAAK,GAAD,OAAKi3B,EAAL,KACJ3pB,KAAM,EACN2E,cAAe,IAAI3V,KACnBwH,WAAY,MAIT,GACR,IAKuC,iBAAxCgzB,EAAkBI,mBACsB,eAAxCJ,EAAkBI,mBAElBJ,EAAkBK,SAASlQ,SAAQ,SAACmQ,GAElC,GAAmB,KAAfA,EAAmB,CACrB,IAAMC,EAAaD,EAAW/hC,MAAM,KAEhCiiC,EAAgC,GAEpCD,EAAWL,OAAM,SAACO,EAAc1hC,GAC9B,OAAK0hC,EAAazhB,SAAS,MAAyB,KAAjByhB,IAC7BA,IAAiBV,EAAiBhhC,IACpC+gC,EAAezY,KAAK,CAClBne,KAAK,GAAD,OAAKs3B,EAAoBthC,KAAK,MAA9B,OACFshC,EAAoB7hC,OAAS,EAAI,IAAM,IADrC,OAED8hC,EAFC,KAGJjqB,KAAM,EACN2E,cAAe,IAAI3V,KACnBwH,WAAY,MAEP,IAEY,KAAjByzB,GACFD,EAAoBnZ,KAAKoZ,IAGpB,GAGV,GACF,CACF,GAEJ,IAEMX,CACR,C,sECzPD,IAtBsB,SAAC,GAAgD,IAA9C7+B,EAA6C,EAA7CA,YAAaO,EAAgC,EAAhCA,UAChCk/B,EAAYC,EAAQ,OAElBC,GAAgBnjC,EAAAA,EAAAA,KACpB,SAACC,GAAD,OAAqBA,EAAMmjC,OAAOC,cAAlC,IAGIC,EACJL,GAAuB,OAAbE,QAAa,IAAbA,OAAA,EAAAA,EAAehgC,kBAAmB,QAAQogC,iBAAmB,IAEzE,OACE,SAAC,MAAD,CACEzhC,MAAO,CACLwB,MAAO,IACPE,YAAAA,EACAO,UAAAA,EACAD,KAAMw/B,EAAS,OAAS,YAI/B,C,4DCbD,IAfA,SACEE,GAEC,IADDC,EACA,uDADsC,KAEtC,SAASC,EAAsBC,GAC7B,OACE,SAAC,EAAAC,SAAD,CAAUH,SAAUA,EAApB,UACE,SAACD,GAAD,UAAuBG,KAG5B,CAED,OAAOD,CACR,C,wGC6BD,KAAe3kC,EAAAA,EAAAA,IA7CA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,UACR4kC,EAAAA,IAFQ,GA6Cf,EAxCuB,SAAC,GAMA,IALtBxkC,EAKqB,EALrBA,QAKqB,IAJrBmF,MAAAA,OAIqB,MAJb,GAIa,EAHrBygB,EAGqB,EAHrBA,QAGqB,IAFrB6e,UAAAA,OAEqB,SADrBnF,EACqB,EADrBA,aAEA,OACE,SAAC,EAAA/8B,SAAD,WACE,UAAC,KAAD,CAAMC,UAAWxC,EAAQ0kC,kBAAzB,UACa,KAAVv/B,IACC,SAAC,KAAD,CAAM3B,MAAI,EAACC,GAAI,GAAIjB,UAAWxC,EAAQ2kC,gBAAtC,SACGx/B,KAGL,UAAC,KAAD,CACE3B,MAAI,EACJC,GAAI,GACJjB,UAAS,UAAKxC,EAAQwkC,eAAb,YACPlF,EAAet/B,EAAQ4kC,qBAAuB,IAJlD,WAOE,SAAC,KAAD,CACEphC,MAAI,EACJC,GAAI,GACJjB,UACEiiC,EAAYzkC,EAAQ6kC,sBAAwB7kC,EAAQ8kC,aAJxD,SAOGlf,IAEF0Z,IACC,gBAAK98B,UAAWxC,EAAQ+kC,mBAAxB,SAA6CzF,WAMxD,G,qNCmHD,KAAe5/B,EAAAA,EAAAA,IAlIA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,kBACRolC,EAAAA,IADO,IAEVpf,QAAS,CACPrR,QAAS,GACTlH,cAAe,GAEjB43B,iBAAkB,CAChBhhC,MAAO,OACPwhB,SAAU,MAETyf,EAAAA,IAXQ,GAkIf,EApHqB,SAAC,GASF,IARlB5hC,EAQiB,EARjBA,QACAF,EAOiB,EAPjBA,UACA0I,EAMiB,EANjBA,MACA7D,EAKiB,EALjBA,SACAjI,EAIiB,EAJjBA,QAIiB,IAHjB+gC,UAAAA,OAGiB,SAFjBoE,EAEiB,EAFjBA,iBAEiB,IADjBtzB,UAAAA,OACiB,MADL,KACK,EACXvR,GAAWC,EAAAA,EAAAA,MACjB,GAAwCU,EAAAA,EAAAA,WAAkB,GAA1D,eAAOmkC,EAAP,KAAqBC,EAArB,KAEMC,GAAoB3kC,EAAAA,EAAAA,KACxB,SAACC,GAAD,OAAqBA,EAAMmjC,OAAOwB,aAAlC,KAGFn7B,EAAAA,EAAAA,YAAU,WACR9J,GAASi/B,EAAAA,EAAAA,IAAqB,IAC/B,GAAE,CAACj/B,KAEJ8J,EAAAA,EAAAA,YAAU,WACR,GAAIk7B,EAAmB,CACrB,GAAkC,KAA9BA,EAAkB9pB,QAEpB,YADA6pB,GAAgB,GAIa,UAA3BC,EAAkBt3B,MACpBq3B,GAAgB,EAEnB,CACF,GAAE,CAACC,IAEJ,IAKME,EAAazE,EACf,CACE/gC,QAAS,CACPylC,MAAOzlC,EAAQilC,mBAGnB,CAAExf,SAAU,KAAetC,WAAW,GAEtC3H,EAAU,GAYd,OAVI8pB,IACF9pB,EAAU8pB,EAAkBI,kBAEa,KAAvCJ,EAAkBI,kBAClBJ,EAAkBI,iBAAiB7jC,OAAS,KAE5C2Z,EAAU8pB,EAAkB9pB,WAK9B,UAAC,KAAD,gBACElV,KAAMlD,EACNpD,QAASA,GACLwlC,GAHN,IAIEG,OAAQ,QACRriC,QAAS,SAAC6C,EAAOy/B,GACA,kBAAXA,GACFtiC,GAEH,EACDd,UAAWxC,EAAQ+I,KAVrB,WAYE,UAAC,IAAD,CAAavG,UAAWxC,EAAQ8L,MAAhC,WACE,iBAAKtJ,UAAWxC,EAAQ6lC,UAAxB,UACGh0B,EADH,IACe/F,MAEf,gBAAKtJ,UAAWxC,EAAQ8lC,eAAxB,UACE,SAAC,IAAD,CACE,aAAW,QACXvhC,GAAI,QACJ/B,UAAWxC,EAAQ+lC,YACnBnjC,QAASU,EACT0iC,eAAa,EACbtsB,KAAK,QANP,UAQE,SAAC,IAAD,YAKN,SAAC,IAAD,CAAWusB,SAAS,KACpB,SAAC,IAAD,CACE3/B,KAAM8+B,EACN5iC,UAAWxC,EAAQkmC,cACnB5iC,QAAS,WA3Db+hC,GAAgB,GAChB/kC,GAASi/B,EAAAA,EAAAA,IAAqB,IA4DzB,EACD/jB,QAASA,EACT2qB,aAAc,CACZ3jC,UAAU,GAAD,OAAKxC,EAAQomC,SAAb,YACPd,GAAgD,UAA3BA,EAAkBt3B,KACnChO,EAAQqmC,cACR,KAGRC,iBACEhB,GAAgD,UAA3BA,EAAkBt3B,KAAmB,IAAQ,OAGtE,SAAC,IAAD,CAAexL,UAAW2iC,EAAmB,GAAKnlC,EAAQ4lB,QAA1D,SACG3d,OAIR,G,wIC9FD,KAAevI,EAAAA,EAAAA,IApDA,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACX4sB,aAAY,UACPA,EAAAA,GAAAA,aAEL+Z,UAAW,CAAC,GALD,GAoDf,EAnCkB,SAAC,GAOI,IAAD,IANpBzsB,YAAAA,OAMoB,MANN,GAMM,EALpB9Z,EAKoB,EALpBA,QACAqM,EAIoB,EAJpBA,SAIoB,IAHpBm6B,kBAAAA,OAGoB,MAHA,MAGA,EAFpBC,EAEoB,EAFpBA,cACAt+B,EACoB,EADpBA,MAEMu+B,GAAU,QACdC,kBAAkB,GADJ,UAEVH,EAFU,cAGZ,SAAC,IAAD,CACE/+B,SAAU++B,EACVhkC,UAAWxC,EAAQumC,UAFrB,UAIE,SAAC,IAAD,OAIN,OACE,SAAC,IAAD,CACEzsB,YAAaA,EACbtX,UAAWikC,GAAgCzmC,EAAQwsB,YACnDjoB,GAAG,kBACHY,MAAM,GACNyhC,WAAYF,EACZr6B,SAAU,SAACC,GACTD,EAASC,EAAEC,OAAOpE,MACnB,EACDxD,QAAQ,WACRwD,MAAOA,GAGZ,G,uECpCD,IAduB,SAAC,GAIK,IAH3BpD,EAG0B,EAH1BA,QACAkD,EAE0B,EAF1BA,SAE0B,IAD1BqR,WAAAA,OAC0B,MADb,KACa,EAC1B,OACE,SAAC,IAAD,CAASxN,MAAO/G,EAAhB,UACE,0BACGuU,GAAautB,EAAAA,EAAAA,cAAa5+B,GAAD,UAAgBqR,IAAgBrR,KAIjE,C,yGC2BD,IA1CoB,SAAC,GAAkC,IAAhCE,EAA+B,EAA/BA,MACrB,GAA0BlH,EAAAA,EAAAA,WAAkB,GAA5C,eAAO6lC,EAAP,KAAcC,EAAd,KAEA,OACE,UAAC,IAAD,CACEnjC,GAAI,CACFsJ,QAAS,OACTC,WAAY,SACZ+L,SAAU,CACR8tB,GAAI,MACJvjC,GAAI,WANV,WAUE,SAAC,IAAD,CACEc,GAAG,kBACH6H,KAAK,kBACL0N,YAAY,GACZ3U,MAAM,GACN6I,KAAM84B,EAAQ,OAAS,WACvBz6B,SAAU,WAAQ,EAClBlE,MAAOA,EACP8+B,aAAa,SAAC,MAAD,IACbxJ,gBAAiB,CACfyJ,UAAU,GAEZC,cAAe,kBAAMC,UAAUC,UAAUC,UAAUn/B,EAApC,KAGjB,SAAC,IAAD,CACE5D,GAAI,gBACJ9B,MAAO,CACLkF,WAAY,QAEdhD,QAAQ,aACR/B,QAAS,kBAAMmkC,GAAUD,EAAhB,EACT3hC,MAAO,gBAId,C","sources":["screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectActionButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Buckets/ListBuckets/Objects/utils.ts","screens/Console/Common/Components/AutoColorIcon.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { IconButton } from \"@mui/material\";\nimport { objectBrowserCommon } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { BackCaretIcon, CopyIcon, NewPathIcon } from \"../../../icons\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { Button } from \"mds\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\")\n )\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...objectBrowserCommon,\n slashSpacingStyle: {\n margin: \"0 5px\",\n },\n });\n\ninterface IObjectBrowser {\n classes: any;\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n existingFiles: BucketObjectItem[];\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n classes,\n bucketName,\n internalPaths,\n existingFiles,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n\n const canCreatePath = hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT]);\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/buckets/${bucketName}/browse/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n {objectItem}\n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" })\n );\n }}\n >\n {objectItem}\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n navigate(-1);\n }\n };\n\n return (\n \n
\n {createFolderOpen && (\n \n )}\n \n \n \n \n
\n {listBreadcrumbs}\n
\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n
{additionalOptions}
\n
\n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n
\n
{additionalOptions}
\n
\n );\n};\n\nexport default withStyles(styles)(BrowserBreadcrumbs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport { UploadFolderIcon, UploadIcon } from \"../../../../icons\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport { Button } from \"mds\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n listUploadIcons: {\n height: 20,\n \"& .min-icon\": {\n width: 18,\n fill: \"rgba(0,0,0,0.87)\",\n },\n },\n });\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n classes,\n}: IUploadFilesButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed = hasPermission(uploadPath, [\n IAM_SCOPES.S3_PUT_OBJECT,\n ]);\n const uploadFolderAllowed = hasPermission(\n bucketName,\n [IAM_SCOPES.S3_PUT_OBJECT],\n false,\n true\n );\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n />\n \n {\n handleCloseUpload();\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {\n uploadFileFunction(handleCloseUpload);\n }}\n disabled={!uploadObjectAllowed || forceDisable}\n >\n \n \n \n Upload File\n \n {\n uploadFolderFunction(handleCloseUpload);\n }}\n disabled={!uploadFolderAllowed || forceDisable}\n >\n \n \n \n Upload Folder\n \n \n \n );\n};\n\nexport default withStyles(styles)(UploadFilesButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport { ClosePanelIcon } from \"../../../../../../icons\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailsList: {\n borderColor: \"#EAEDEE\",\n borderWidth: 0,\n borderStyle: \"solid\",\n borderRadius: 3,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n width: 0,\n transitionDuration: \"0.3s\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n position: \"relative\",\n opacity: 0,\n marginLeft: -1,\n \"&.open\": {\n width: 300,\n minWidth: 300,\n borderLeftWidth: 1,\n opacity: 1,\n },\n \"@media (max-width: 799px)\": {\n \"&.open\": {\n width: \"100%\",\n minWidth: \"100%\",\n borderLeftWidth: 0,\n },\n },\n },\n closePanel: {\n position: \"absolute\",\n right: 0,\n top: 8,\n \"& .min-icon\": {\n width: 14,\n },\n },\n })\n);\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => num + 1);\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(\n Array(25),\n (_, numYear) => numYear + currentYear\n);\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport InputBase from \"@mui/material/InputBase\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport FormSwitchWrapper from \"../FormSwitchWrapper/FormSwitchWrapper\";\nimport { days, months, validDate, years } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateInput: {\n \"&:not(:last-child)\": {\n marginRight: 22,\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n flex: 1,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n fieldContainerBorder: {\n borderBottom: \"#9c9c9c 1px solid\",\n marginBottom: 20,\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n \"& .MuiSelect-icon\": {\n color: \"#000\",\n \"&.Mui-disabled\": {\n color: \"#9c9c9c\",\n },\n },\n },\n input: {\n borderBottom: 0,\n fontSize: 12,\n },\n })\n)(InputBase);\n\ninterface IDateSelectorProps {\n classes: any;\n id: string;\n label: string;\n disableOptions?: boolean;\n addSwitch?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n classes,\n id,\n label,\n disableOptions = false,\n addSwitch = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [dateEnabled, setDateEnabled] = useState(false);\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else if (addSwitch) {\n return !dateEnabled;\n } else {\n return false;\n }\n };\n\n const onMonthChange = (e: SelectChangeEvent) => {\n setMonth(e.target.value as string);\n };\n\n const onDayChange = (e: SelectChangeEvent) => {\n setDay(e.target.value as string);\n };\n\n const onYearChange = (e: SelectChangeEvent) => {\n setYear(e.target.value as string);\n };\n\n return (\n \n
\n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n {addSwitch && (\n {\n setDateEnabled(e.target.checked);\n if (!e.target.checked) {\n onDateChange(\"\", true);\n }\n }}\n switchOnly\n />\n )}\n
\n
\n
\n \n }\n >\n \n {\"\"}\n \n {months.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {days.map((dayNumber) => (\n \n {dayNumber}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {years.map((year) => (\n \n {year}\n \n ))}\n \n \n
\n \n );\n }\n);\n\nexport default withStyles(styles)(DateSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\n\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n dateSelector: {\n \"& div\": {\n borderBottom: 0,\n marginBottom: 0,\n\n \"& div:nth-child(2)\": {\n border: \"1px solid #EAEAEA\",\n paddingLeft: 5,\n\n \"& div\": {\n border: 0,\n },\n },\n },\n },\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: IFileInfo;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(objectInfo.retention_mode.toLowerCase());\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(\"\");\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string\n ) => {\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`,\n {\n expires: expireDate,\n mode: type,\n }\n )\n .then((res: any) => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null\n ) => {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name;\n const versionId = objectInfo.version_id;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n
\n Selected Object: {objectName}\n
\n ) => {\n onSubmit(e);\n }}\n >\n {showSwitcher && (\n \n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n {\n setType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Governance\", value: \"governance\" },\n { label: \"Compliance\", value: \"compliance\" },\n ]}\n />\n \n \n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetRetention);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioning: boolean;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n\n versioning,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {versioning && selectedVersion === \"\" && (\n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: IFileInfo;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/legalhold?prefix=${encodeURLString(\n objectName\n )}&version_id=${versionId}`,\n { status: legalHoldEnabled ? \"enabled\" : \"disabled\" }\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","import React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { MetadataResponse } from \"./types\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, Table, TableBody, TableCell, TableRow } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n detailsPanel,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { withStyles } from \"@mui/styles\";\n\ninterface IObjectMetadata {\n bucketName: string;\n internalPaths: string;\n classes?: any;\n actualInfo: any;\n linear?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n propertiesIcon: {\n marginLeft: 5,\n \"& .min-icon\": {\n height: 12,\n },\n },\n\n capitalizeFirst: {\n textTransform: \"capitalize\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n },\n },\n titleItem: {\n width: \"35%\",\n },\n ...spacingUtils,\n ...detailsPanel,\n });\n\nconst ObjectMetaData = ({\n bucketName,\n internalPaths,\n classes,\n actualInfo,\n linear = false,\n}: IObjectMetadata) => {\n const [metaData, setMetaData] = useState({});\n\n const onMetaDataSuccess = (res: MetadataResponse) => {\n let metadata = get(res, \"objectMetadata\", {});\n\n setMetaData(metadata);\n };\n const onMetaDataError = (err: ErrorResponseHandler) => false;\n\n const [, invokeMetaDataApi] = useApi(onMetaDataSuccess, onMetaDataError);\n\n const metaKeys = Object.keys(metaData);\n const loadMetaData = useCallback(() => {\n invokeMetaDataApi(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/metadata?prefix=${internalPaths}`\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName, internalPaths, actualInfo]);\n\n useEffect(() => {\n if (actualInfo) {\n loadMetaData();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [actualInfo, loadMetaData]);\n\n if (linear) {\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n }\n\n return (\n \n \n \n Object Metadata\n \n \n\n \n \n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n \n {element}\n \n {renderItem}\n \n );\n })}\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(ObjectMetaData);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport clsx from \"clsx\";\n\ntype ObjectActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n icon: React.ReactNode;\n label: string;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: \"0 15px\",\n height: 22,\n margin: 0,\n color: \"#5E5E5E\",\n fontWeight: \"normal\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n \"&:hover\": {\n backgroundColor: \"transparent\",\n color: \"#000\",\n },\n \"& .min-icon\": {\n width: 11,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n });\n\n// TODO: Create an mds version of this.\nconst ObjectActionButton = ({\n disabled,\n onClick,\n icon,\n label,\n classes,\n ...restProps\n}: ObjectActionButtonProps) => {\n return (\n \n {label}\n \n );\n};\n\nexport default withStyles(styles)(ObjectActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ObjectActionButton from \"./ObjectActionButton\";\nimport { withStyles } from \"@mui/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { detailsPanel } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = () =>\n createStyles({\n ...detailsPanel,\n });\n\nexport interface MultiSelectionItem {\n action: () => void;\n label: string;\n disabled: boolean;\n icon: React.ReactNode;\n tooltip: string;\n}\n\ninterface IActionsListSectionProps {\n items: MultiSelectionItem[];\n title: string | React.ReactNode;\n classes: any;\n}\n\nconst ActionsListSection = ({\n items,\n classes,\n title,\n}: IActionsListSectionProps) => {\n return (\n \n
{title}
\n
    \n
  • Actions:
  • \n {items.map((actionItem, index) => {\n return (\n
  • \n \n \n \n
  • \n );\n })}\n
\n
\n );\n};\n\nexport default withStyles(styles)(ActionsListSection);\n","import React from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ninterface IIconWithLabel {\n classes: any;\n icon: JSX.Element;\n strings: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n fileName: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n minWidth: 16,\n minHeight: 16,\n },\n },\n fileNameText: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n });\n\nconst IconWithLabel = ({ classes, icon, strings }: IIconWithLabel) => {\n return (\n
\n {icon}\n \n {strings[strings.length - 1]}\n \n
\n );\n};\n\nexport default withStyles(styles)(IconWithLabel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport ObjectBrowserIcon from \"../../../../../../icons/ObjectBrowserIcon\";\nimport ObjectBrowserFolderIcon from \"../../../../../../icons/ObjectBrowserFolderIcon\";\nimport IconWithLabel from \"./IconWithLabel\";\n\nconst FileBookIcon = React.lazy(\n () => import(\"../../../../../../icons/FileBookIcon\")\n);\nconst FileCodeIcon = React.lazy(\n () => import(\"../../../../../../icons/FileCodeIcon\")\n);\nconst FileConfigIcon = React.lazy(\n () => import(\"../../../../../../icons/FileConfigIcon\")\n);\nconst FileDbIcon = React.lazy(\n () => import(\"../../../../../../icons/FileDbIcon\")\n);\nconst FileFontIcon = React.lazy(\n () => import(\"../../../../../../icons/FileFontIcon\")\n);\nconst FileImageIcon = React.lazy(\n () => import(\"../../../../../../icons/FileImageIcon\")\n);\nconst FileLockIcon = React.lazy(\n () => import(\"../../../../../../icons/FileLockIcon\")\n);\nconst FileMissingIcon = React.lazy(\n () => import(\"../../../../../../icons/FileMissingIcon\")\n);\nconst FileMusicIcon = React.lazy(\n () => import(\"../../../../../../icons/FileMusicIcon\")\n);\nconst FilePdfIcon = React.lazy(\n () => import(\"../../../../../../icons/FilePdfIcon\")\n);\nconst FilePptIcon = React.lazy(\n () => import(\"../../../../../../icons/FilePptIcon\")\n);\nconst FileTxtIcon = React.lazy(\n () => import(\"../../../../../../icons/FileTxtIcon\")\n);\nconst FileVideoIcon = React.lazy(\n () => import(\"../../../../../../icons/FileVideoIcon\")\n);\nconst FileXlsIcon = React.lazy(\n () => import(\"../../../../../../icons/FileXlsIcon\")\n);\nconst FileZipIcon = React.lazy(\n () => import(\"../../../../../../icons/FileZipIcon\")\n);\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"txt\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Grid } from \"@mui/material\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n AddNewTagIcon,\n DisabledIcon,\n EditTagIcon,\n} from \"../../../../../../icons\";\nimport { IFileInfo } from \"./types\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: IFileInfo;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name);\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: newTagList }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: cleanObject }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
\n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
\n );\n\n return (\n \n Delete Tag\n ) : (\n `Edit Tags`\n )\n }\n onClose={() => {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
\n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n \n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button } from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { InspectMenuIcon } from \"../../../../../../icons/SidebarMenus\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { PasswordKeyIcon } from \"../../../../../../icons\";\nimport { Box, DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n })\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n
\n \n ) : null}\n
\n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { EditIcon } from \"../../../icons\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: IFileInfo;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n\n const identityDownload = encodeURLString(\n `${bucketName}-${\n actualInfo.name\n }-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n actualInfo.version_id,\n parseInt(actualInfo.size || \"0\"),\n newFileName,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: newFileName,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n closeModal();\n };\n\n return (\n }\n >\n
\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n buttonsStyles,\n detailsPanel,\n spacingUtils,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../ObjectDetails/types\";\nimport { download, extensionPreview } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n getClientOS,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n DeleteIcon,\n DownloadIcon,\n LegalHoldIcon,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n TagsIcon,\n VersionsIcon,\n} from \"../../../../../../icons\";\nimport { InspectMenuIcon } from \"../../../../../../icons/SidebarMenus\";\nimport api from \"../../../../../../common/api\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { displayFileIconName } from \"./utils\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport Loader from \"../../../../Common/Loader/Loader\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = () =>\n createStyles({\n ObjectDetailsTitle: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 26,\n height: 26,\n minWidth: 26,\n minHeight: 26,\n },\n },\n objectNameContainer: {\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n alignItems: \"center\",\n marginLeft: 10,\n },\n headerForSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 15,\n borderBottom: \"#E2E2E2 2px solid\",\n fontWeight: \"bold\",\n fontSize: 18,\n color: \"#000\",\n margin: \"20px 22px\",\n },\n capitalizeFirst: {\n textTransform: \"capitalize\",\n },\n ...buttonsStyles,\n ...actionsTray,\n ...spacingUtils,\n ...textStyleUtils,\n ...detailsPanel,\n });\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\ninterface IObjectDetailPanelProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n versioning: boolean;\n locking: boolean;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n classes,\n internalPaths,\n bucketName,\n versioning,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: IFileInfo) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: IFileInfo) => el.version_id === selectedVersion\n ) || emptyFile;\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n const tVersionSize = result.reduce(\n (acc: number, currValue: IFileInfo) => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n setActualInfo(result[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((error: ErrorResponseHandler) => {\n console.error(\"Error loading object details\", error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n if (\n object.name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n setLongFileOpen(true);\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [IAM_SCOPES.S3_GET_OBJECT_RETENTION, IAM_SCOPES.S3_PUT_OBJECT_RETENTION],\n true\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT]\n );\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT],\n \"download this object\"\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT],\n \"share this object\"\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n extensionPreview(currentItem) === \"none\" ||\n !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT],\n \"preview this object\"\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD],\n \"change legal hold settings for this object\"\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n ],\n \"change Retention Rules for this object\"\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n ],\n \"set Tags on this object\"\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\"\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n })\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n ],\n \"display all versions of this object\"\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName, true)}\n \n {objectName}\n \n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n style={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n \n Object Info\n \n \n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(actualInfo.size || \"0\")}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified)}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n \n Metadata\n \n \n \n {actualInfo ? (\n \n ) : null}\n \n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(ObjectDetailPanel);\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 * as reactMoment from \"react-moment\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n return {object.last_modified};\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n contentTextAlign: \"center\",\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n contentTextAlign: \"center\",\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n contentTextAlign: \"center\",\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, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport api from \"../../../../../../common/api\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport RecoverIcon from \"../../../../../../icons/RecoverIcon\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionID: string;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionID,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/restore?prefix=${encodeURLString(\n objectPath\n )}&version_id=${versionID}`\n )\n .then((res: any) => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionID}?\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport * as reactMoment from \"react-moment\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { withStyles } from \"@mui/styles\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport { IFileInfo } from \"./types\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n} from \"../../../../../../icons\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: IFileInfo;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: IFileInfo) => void;\n onDownload: (versionInfo: IFileInfo) => void;\n onRestore: (versionInfo: IFileInfo) => void;\n onPreview: (versionInfo: IFileInfo) => void;\n globalClick: (versionInfo: IFileInfo) => void;\n classes: any;\n key: any;\n style: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainFileVersionItem: {\n borderBottom: \"#E2E2E2 1px solid\",\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n \"@media (max-width: 799px)\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n },\n intermediateLayer: {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: \"#F8F8F8\",\n \"& > div\": {\n borderBottomColor: \"#F8F8F8\",\n },\n },\n \"@media (max-width: 799px)\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: \"#E2E2E2\",\n },\n },\n },\n },\n versionContainer: {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n \"@media (max-width: 799px)\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n },\n buttonContainer: {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n \"@media (max-width: 600px)\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n versionID: {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n versionData: {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n \"@media (max-width: 799px)\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n },\n ctrItem: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n collapsableInfo: {\n \"@media (max-width: 799px)\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n versionItem: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n });\n\nconst FileVersionItem = ({\n classes,\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n return (\n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n \n {versionInfo.last_modified}\n \n \n \n Size: {niceBytes(versionInfo.size || \"0\")}\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FileVersionItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}&non_current_versions=true`\n )\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
\n
\n To continue please type YES, PROCEED in the box.\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport api from \"../../../../../../common/api\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api\n .invoke(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=false`,\n selectedObjectsRequest\n )\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n buttonsStyles,\n containerForHeader,\n hrClass,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { download } from \"../utils\";\nimport api from \"../../../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n DeleteIcon,\n DeleteNonCurrentIcon,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"../../../../../../icons\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport { Button } from \"mds\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n height: \"40px\",\n bottom: 0,\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...hrClass,\n ...buttonsStyles,\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\"\");\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: IFileInfo) => item.name === decodedInternalPaths\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: IFileInfo) => el.is_latest) ||\n emptyFile\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const onShareItem = (item: IFileInfo) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: IFileInfo) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: IFileInfo) => {\n setRestoreVersion(item.version_id || \"\");\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: IFileInfo) => {\n downloadObject(item);\n };\n\n const onGlobalClick = (item: IFileInfo) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(\"\");\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: IFileInfo) => {\n if (currValue.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified).getTime();\n const dateB = new Date(b.last_modified).getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={\n \n {objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name}{\" \"}\n Versions\n \n }\n subTitle={\n \n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n Sort by\n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Date\", value: \"date\" },\n {\n label: \"Size\",\n value: \"size\",\n },\n ]}\n />\n \n }\n className={classes.noBottomBorder}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport get from \"lodash/get\";\nimport { BucketObjectItem, BucketObjectItemsList } from \"./types\";\nimport api from \"../../../../../../common/api\";\nimport TableWrapper, {\n ItemActions,\n} from \"../../../../Common/TableWrapper/TableWrapper\";\nimport {\n decodeURLString,\n encodeURLString,\n getClientOS,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n searchField,\n tableStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Badge, Typography } from \"@mui/material\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport {\n download,\n extensionPreview,\n permissionItems,\n sortListObjects,\n} from \"../utils\";\nimport {\n BucketInfo,\n BucketObjectLocking,\n BucketQuota,\n BucketVersioning,\n} from \"../../../types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport PageLayout from \"../../../../Common/Layout/PageLayout\";\n\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport {\n BucketsIcon,\n DownloadIcon,\n PreviewIcon,\n ShareIcon,\n} from \"../../../../../../icons\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\n\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetRewind,\n setLoadingObjectInfo,\n setLoadingObjectsList,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setSearchObjects,\n setSelectedObjectView,\n setShowDeletedObjects,\n setSimplePathHandler,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst HistoryIcon = React.lazy(\n () => import(\"../../../../../../icons/HistoryIcon\")\n);\nconst RefreshIcon = React.lazy(\n () => import(\"../../../../../../icons/RefreshIcon\")\n);\n\nconst DeleteIcon = React.lazy(\n () => import(\"../../../../../../icons/DeleteIcon\")\n);\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\"))\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\"))\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n height: \"calc(100vh - 210px)\",\n \"&.isEmbedded\": {\n height: \"calc(100vh - 315px)\",\n },\n \"&.actionsPanelOpen\": {\n minHeight: \"100%\",\n },\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n\n badgeOverlap: {\n \"& .MuiBadge-badge\": {\n top: 10,\n right: 1,\n width: 5,\n height: 5,\n minWidth: 5,\n },\n },\n screenTitle: {\n borderBottom: 0,\n paddingTop: 0,\n paddingLeft: 0,\n paddingRight: 0,\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n screenTitleContainer: {\n border: \"#EAEDEE 1px solid\",\n padding: \"0.8rem 15px 0\",\n },\n labelStyle: {\n color: \"#969FA8\",\n fontSize: \"12px\",\n },\n breadcrumbsContainer: {\n padding: \"12px 14px 5px\",\n },\n parentWrapper: {\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n },\n fullContainer: {\n \"@media (max-width: 799px)\": {\n width: 0,\n },\n },\n hideListOnSmall: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n ...objectBrowserExtras,\n ...objectBrowserCommon,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"#eeeeee\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#00e676\",\n};\n\nfunction useInterval(callback: any, delay: number) {\n const savedCallback = useRef(null);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n if (savedCallback !== undefined && savedCallback.current) {\n savedCallback.current();\n }\n }\n\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nconst defLoading = Loading...;\n\nconst ListObjects = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const loading = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const allowResources = useSelector(\n (state: AppState) => state.console.session.allowResources\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const [records, setRecords] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [loadingStartTime, setLoadingStartTime] = useState(0);\n const [loadingMessage, setLoadingMessage] =\n useState(defLoading);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [isVersioned, setIsVersioned] = useState(false);\n const [loadingLocking, setLoadingLocking] = useState(true);\n const [lockingEnabled, setLockingEnabled] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [selectedObjects, setSelectedObjects] = useState([]);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [selectedPreview, setSelectedPreview] =\n useState(null);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n const [downloadRenameModal, setDownloadRenameModal] =\n useState(null);\n\n const pathSegment = location.pathname.split(\"/browse/\");\n\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n const bucketName = params.bucketName || \"\";\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n\n if (extensionPreview(objectName) !== \"none\") {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\")) {\n setCanShareFile(false);\n } else {\n setCanShareFile(true);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects]);\n\n useEffect(() => {\n if (!quota) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n let quotaVals = null;\n\n if (res.quota) {\n quotaVals = res;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\"Error Getting Quota Status: \", err.detailedError);\n setQuota(null);\n });\n }\n }, [quota, bucketName]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (selectedObjects.length === 0 && selectedInternalPaths === null) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch]);\n\n const displayDeleteObject = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_OBJECT,\n ]);\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n ]);\n\n const updateMessage = () => {\n let timeDelta = Date.now() - loadingStartTime;\n\n if (timeDelta / 1000 >= 6) {\n setLoadingMessage(\n \n \n This operation is taking longer than expected... (\n {Math.ceil(timeDelta / 1000)}s)\n \n \n );\n } else if (timeDelta / 1000 >= 3) {\n setLoadingMessage(\n \n This operation is taking longer than expected...\n \n );\n }\n };\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n useInterval(() => {\n // Your custom logic here\n if (loading) {\n updateMessage();\n }\n }, 1000);\n\n useEffect(() => {\n if (loadingVersioning) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioning) => {\n setIsVersioned(res.is_versioned);\n setLoadingVersioning(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.detailedError\n );\n setLoadingVersioning(false);\n });\n } else {\n setLoadingVersioning(false);\n setRecords([]);\n }\n }\n }, [bucketName, loadingVersioning, dispatch, displayListObjects]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n setLockingEnabled(res.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n setLoadingLocking(false);\n });\n } else {\n setRecords([]);\n setLoadingLocking(false);\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(\n setSimplePathHandler(decodedIPaths === \"\" ? \"/\" : decodedIPaths)\n );\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`\n )\n );\n dispatch(\n setSimplePathHandler(\n `${decodedIPaths.split(\"/\").slice(0, -1).join(\"/\")}/`\n )\n );\n }\n }, [internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n useEffect(() => {\n dispatch(setSearchObjects(\"\"));\n dispatch(setLoadingObjectsList(true));\n setSelectedObjects([]);\n }, [simplePath, dispatch, setSelectedObjects]);\n\n useEffect(() => {\n if (loading) {\n if (displayListObjects) {\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n let currentTimestamp = Date.now();\n setLoadingStartTime(currentTimestamp);\n setLoadingMessage(defLoading);\n\n // We get URL to look into\n let urlTake = `/api/v1/buckets/${bucketName}/objects`;\n\n // Is rewind enabled?, we use Rewind API\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n\n if (rewindDate) {\n const rewindParsed = rewindDate.toISOString();\n\n urlTake = `/api/v1/buckets/${bucketName}/rewind/${rewindParsed}`;\n }\n } else if (showDeleted) {\n // Do we want to display deleted items too?, we use rewind to current time to show everything\n const currDate = new Date();\n const currDateISO = currDate.toISOString();\n\n urlTake = `/api/v1/buckets/${bucketName}/rewind/${currDateISO}`;\n }\n\n api\n .invoke(\n \"GET\",\n `${urlTake}${\n pathPrefix ? `?prefix=${encodeURLString(pathPrefix)}` : ``\n }`\n )\n .then((res: BucketObjectItemsList) => {\n const records: BucketObjectItem[] = res.objects || [];\n const folders: BucketObjectItem[] = [];\n const files: BucketObjectItem[] = [];\n\n // We separate items between folders or files to display folders at the beginning always.\n records.forEach((record) => {\n // We omit files from the same path\n if (record.name !== decodeURLString(internalPaths)) {\n // this is a folder\n if (record.name.endsWith(\"/\")) {\n folders.push(record);\n } else {\n // this is a file\n files.push(record);\n }\n }\n });\n\n const recordsInElement = [...folders, ...files];\n\n if (recordsInElement.length === 0 && pathPrefix !== \"\") {\n let pathTest = `/api/v1/buckets/${bucketName}/objects${\n internalPaths ? `?prefix=${internalPaths}` : \"\"\n }`;\n\n if (rewindEnabled) {\n const rewindParsed = rewindDate.toISOString();\n\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n pathTest = `/api/v1/buckets/${bucketName}/rewind/${rewindParsed}${\n pathPrefix ? `?prefix=${encodeURLString(pathPrefix)}` : ``\n }`;\n }\n\n api\n .invoke(\"GET\", pathTest)\n .then((res: BucketObjectItemsList) => {\n //It is a file since it has elements in the object, setting file flag and waiting for component mount\n if (!res.objects) {\n // It is a folder, we remove loader & set original results list\n dispatch(setLoadingObjectsList(false));\n setRecords(recordsInElement);\n } else {\n // This code prevents the program from opening a file when a substring of that file is entered as a new folder.\n // Previously, if there was a file test1.txt and the folder test was created with the same prefix, the program\n // would open test1.txt instead\n let found = false;\n let pathPrefixChopped = pathPrefix.slice(\n 0,\n pathPrefix.length - 1\n );\n for (let i = 0; i < res.objects.length; i++) {\n if (res.objects[i].name === pathPrefixChopped) {\n found = true;\n }\n }\n if (\n (res.objects.length === 1 &&\n res.objects[0].name.endsWith(\"/\")) ||\n !found\n ) {\n // This is a folder, we set the original results list\n setRecords(recordsInElement);\n } else {\n // This is a file. We change URL & Open file details view.\n dispatch(setObjectDetailsView(true));\n dispatch(setSelectedObjectView(internalPaths));\n\n // We split the selected object URL & remove the last item to fetch the files list for the parent folder\n const parentPath = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n\n api\n .invoke(\n \"GET\",\n `${urlTake}${\n pathPrefix\n ? `?prefix=${encodeURLString(parentPath)}`\n : ``\n }`\n )\n .then((res: BucketObjectItemsList) => {\n const records: BucketObjectItem[] = res.objects || [];\n\n setRecords(records);\n })\n .catch(() => {});\n }\n\n dispatch(setLoadingObjectsList(false));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setLoadingObjectsList(false));\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setRecords(recordsInElement);\n dispatch(setLoadingObjectsList(false));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n const permitItems = permissionItems(\n bucketName,\n pathPrefix,\n allowResources || []\n );\n\n if (!permitItems || permitItems.length === 0) {\n dispatch(setErrorSnackMessage(err));\n } else {\n setRecords(permitItems);\n }\n\n dispatch(setLoadingObjectsList(false));\n });\n } else {\n dispatch(setLoadingObjectsList(false));\n }\n }\n }, [\n loading,\n dispatch,\n bucketName,\n rewindEnabled,\n rewindDate,\n internalPaths,\n bucketInfo,\n showDeleted,\n displayListObjects,\n bucketToRewind,\n allowResources,\n ]);\n\n // bucket info\n useEffect(() => {\n if (loadingBucket) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}`)\n .then((res: BucketInfo) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [bucketName, loadingBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n setSelectedObjects([]);\n dispatch(setLoadingObjectsList(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (var i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const openPath = (idElement: string) => {\n setSelectedObjects([]);\n\n const newPath = `/buckets/${bucketName}/browse${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n navigate(newPath);\n\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`\n )\n );\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function (event) {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n })\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", (event) => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n })\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setLoadingObjectsList(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n\n storeFormDataWithID(ID, formData);\n storeCallForObjectWithID(ID, xhr);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\"\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setLoadingObjectsList(true));\n setSelectedObjects([]);\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath]\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n uploadObject(acceptedFiles, newFolderPath);\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT],\n \"upload objects to this location\"\n ),\n })\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject]\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept]\n );\n\n const openPreview = () => {\n if (selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n fileObject = filteredRecords.find(findFunction);\n\n if (fileObject) {\n setSelectedPreview(fileObject);\n setPreviewOpen(true);\n }\n }\n };\n\n const openShare = () => {\n if (selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n fileObject = filteredRecords.find(findFunction);\n\n if (fileObject) {\n setSelectedPreview(fileObject);\n setShareFileModalOpen(true);\n }\n }\n };\n\n const closeShareModal = () => {\n setShareFileModalOpen(false);\n setSelectedPreview(null);\n };\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n setPreviewOpen(false);\n setSelectedPreview(null);\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedObjects(elements);\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setLoadingObjectsList(true));\n };\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n setSelectedObjects([]);\n return;\n }\n\n const elements = payload.map((item) => item.name);\n setSelectedObjects(elements);\n };\n\n const downloadSelected = () => {\n if (selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n itemsToDownload = filteredRecords.filter(filterFunction);\n\n // I case just one element is selected, then we trigger download modal validation.\n // We are going to enforce zip download when multiple files are selected\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n setDownloadRenameModal(itemsToDownload[0]);\n return;\n }\n }\n\n itemsToDownload.forEach((filteredItem) => {\n downloadObject(filteredItem);\n });\n }\n };\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const canDownload = hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT]);\n const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]);\n const canUpload = hasPermission(uploadPath, [IAM_SCOPES.S3_PUT_OBJECT]);\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/buckets/${bucketName}/browse/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n setSelectedObjects([]);\n\n if (forceRefresh) {\n dispatch(setLoadingObjectsList(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n setDownloadRenameModal(null);\n };\n\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n label: \"View\",\n onClick: openPath,\n sendOnlyId: true,\n },\n ];\n\n const multiActionButtons = [\n {\n action: downloadSelected,\n label: \"Download\",\n disabled: !canDownload || selectedObjects.length === 0,\n icon: ,\n tooltip: canDownload\n ? \"Download Selected\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT],\n \"download objects from this bucket\"\n ),\n },\n {\n action: openShare,\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: openPreview,\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled:\n !canDelete || selectedObjects.length === 0 || !displayDeleteObject,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\"\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n \n \n \n \n \n }\n title={{bucketName}}\n subTitle={\n \n \n \n Created:   \n {bucketInfo?.creation_date || \"\"}\n \n \n Access:   \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n / {niceBytesInt(quota.quota)}\n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n \n }\n actions={\n \n
\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioned ||\n !hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT])\n }\n />\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(setLoadingObjectsList(true));\n }\n }}\n disabled={\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n
\n
\n }\n />\n
\n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n \n \n \n \n )\n }\n hidePathButton={false}\n />\n \n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n />\n \n \n )}\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? classes.hideListOnSmall : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport SettingsIcon from \"../../../../icons/SettingsIcon\";\n\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport BackLink from \"../../../../common/BackLink\";\nimport {\n setSearchObjects,\n setSearchVersions,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport AutoColorIcon from \"../../Common/Components/AutoColorIcon\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Button } from \"mds\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n const location = useLocation();\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n\n const features = useSelector(selFeatures);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(\"/browse/\");\n\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n useEffect(() => {\n dispatch(setVersionsModeEnabled({ status: false }));\n }, [internalPaths, dispatch]);\n\n const openBucketConfiguration = () => {\n navigate(`/buckets/${bucketName}/admin`);\n };\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n return (\n \n {!obOnly ? (\n }\n actions={\n \n \n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n )}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(BrowserHandler);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport moment from \"moment/moment\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport InputBoxWrapper from \"../InputBoxWrapper/InputBoxWrapper\";\nimport { LinkIcon } from \"../../../../../icons\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n dateInputContainer: {\n margin: \"0 10px\",\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number\n) => {\n return moment(initialDate)\n .add(days, \"days\")\n .add(hours, \"hours\")\n .add(minutes, \"minutes\");\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(moment());\n\n useEffect(() => {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes\n )\n );\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n onChange(dateSelected.format(\"YYYY-MM-DDTHH:mm:ss\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraInputProps = {\n style: {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 25,\n },\n className: \"removeArrows\" as const,\n };\n\n return (\n \n \n \n \n {label}\n \n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
\n \n
\n {entity} will be available until:\n
{\" \"}\n
\n {dateSelected.format(\"MM/DD/YYYY HH:mm:ss\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { ShareIcon } from \"../../../../../../icons\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst CopyIcon = React.lazy(() => import(\"../../../../../../icons/CopyIcon\"));\n\nconst styles = (theme: Theme) =>\n createStyles({\n shareLinkInfo: {\n fontSize: 14,\n fontWeight: 400,\n },\n copyShareLink: {\n display: \"flex\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n },\n copyShareLinkInput: {\n \"& div:first-child\": {\n marginTop: 0,\n },\n \"@media (max-width: 900px)\": {\n minWidth: 250,\n },\n },\n copyShareLinkBtn: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n marginTop: 10,\n },\n },\n ...modalStyleUtils,\n ...formFieldStyles,\n });\n\ninterface IShareFileProps {\n classes: any;\n open: boolean;\n bucketName: string;\n dataObject: IFileInfo;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n classes,\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${encodeURLString(\n dataObject.name\n )}${distributedSetup ? \"&with_versions=true\" : \"\"}`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const latestVersion = result.find(\n (elem: IFileInfo) => elem.is_latest\n );\n\n if (latestVersion) {\n setVersionID(latestVersion.version_id);\n return;\n }\n\n // Version couldn't ve retrieved, we default\n setVersionID(\"null\");\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000\n );\n\n if (diffDate > 0) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/share?prefix=${encodeURLString(\n dataObject.name\n )}&version_id=${versionID}${\n selectedDate !== \"\" ? `&expires=${diffDate}s` : \"\"\n }`\n )\n .then((res: string) => {\n setShareURL(res);\n setIsLoadingFile(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
\n
\n The temporary URL expires after the configured time limit.\n
\n
\n \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\n \"Share URL Copied to clipboard\"\n )\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n />\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(ShareFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, LinearProgress } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { extensionPreview } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n const objectType = extensionPreview(object?.name || \"\");\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {loading && (\n \n \n \n )}\n
\n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n
\n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"../../../../../../icons\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { BucketObjectItem } from \"./ListObjects/types\";\nimport { IAllowResources } from \"../../../types\";\nimport { encodeURLString } from \"../../../../../common/utils\";\nimport { removeTrace } from \"../../../ObjectBrowser/transferManager\";\n\nexport const download = (\n bucketName: string,\n objectPath: string,\n versionID: any,\n fileSize: number,\n overrideFileName: string | null = null,\n id: string,\n progressCallback: (progress: number) => void,\n completeCallback: () => void,\n errorCallback: (msg: string) => void,\n abortCallback: () => void\n) => {\n const anchor = document.createElement(\"a\");\n document.body.appendChild(anchor);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n\n let path = `${\n window.location.origin\n }${basename}api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}${\n overrideFileName !== null && overrideFileName.trim() !== \"\"\n ? `&override_file_name=${encodeURLString(overrideFileName || \"\")}`\n : \"\"\n }`;\n if (versionID) {\n path = path.concat(`&version_id=${versionID}`);\n }\n\n var req = new XMLHttpRequest();\n req.open(\"GET\", path, true);\n req.addEventListener(\n \"progress\",\n function (evt) {\n let percentComplete = Math.round((evt.loaded / fileSize) * 100);\n\n if (progressCallback) {\n progressCallback(percentComplete);\n }\n },\n false\n );\n\n req.responseType = \"blob\";\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n const rspHeader = req.getResponseHeader(\"Content-Disposition\");\n\n let filename = \"download\";\n if (rspHeader) {\n let rspHeaderDecoded = decodeURIComponent(rspHeader);\n filename = rspHeaderDecoded.split('\"')[1];\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n removeTrace(id);\n\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(req.response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n if (req.getResponseHeader(\"Content-Type\") === \"application/json\") {\n const rspBody: { detailedMessage?: string } = JSON.parse(\n req.response\n );\n if (rspBody.detailedMessage) {\n errorCallback(rspBody.detailedMessage);\n return;\n }\n }\n errorCallback(`Unexpected response status code (${req.status}).`);\n }\n }\n };\n req.onerror = () => {\n if (errorCallback) {\n errorCallback(\"A network error occurred.\");\n }\n };\n req.onabort = () => {\n if (abortCallback) {\n abortCallback();\n }\n };\n\n return req;\n};\n\n// Review file extension by name & returns the type of preview browser that can be used\nexport const extensionPreview = (\n fileName: string\n): \"image\" | \"text\" | \"audio\" | \"video\" | \"none\" => {\n const imageExtensions = [\n \"jif\",\n \"jfif\",\n \"apng\",\n \"avif\",\n \"svg\",\n \"webp\",\n \"bmp\",\n \"ico\",\n \"jpg\",\n \"jpe\",\n \"jpeg\",\n \"gif\",\n \"png\",\n \"heic\",\n ];\n const textExtensions = [\"pdf\", \"txt\", \"json\"];\n const audioExtensions = [\"wav\", \"mp3\", \"alac\", \"aiff\", \"dsd\", \"pcm\"];\n const videoExtensions = [\n \"mp4\",\n \"avi\",\n \"mpg\",\n \"webm\",\n \"mov\",\n \"flv\",\n \"mkv\",\n \"wmv\",\n \"avchd\",\n \"mpeg-4\",\n ];\n\n let fileExtension = fileName.split(\".\").pop();\n\n if (!fileExtension) {\n return \"none\";\n }\n\n fileExtension = fileExtension.toLowerCase();\n\n if (imageExtensions.includes(fileExtension)) {\n return \"image\";\n }\n\n if (textExtensions.includes(fileExtension)) {\n return \"text\";\n }\n\n if (audioExtensions.includes(fileExtension)) {\n return \"audio\";\n }\n\n if (videoExtensions.includes(fileExtension)) {\n return \"video\";\n }\n\n return \"none\";\n};\n\nexport const sortListObjects = (fieldSort: string) => {\n switch (fieldSort) {\n case \"name\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n a.name.localeCompare(b.name);\n case \"last_modified\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n new Date(a.last_modified).getTime() -\n new Date(b.last_modified).getTime();\n case \"size\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n (a.size || -1) - (b.size || -1);\n }\n};\n\nexport const permissionItems = (\n bucketName: string,\n currentPath: string,\n permissionsArray: IAllowResources[]\n): BucketObjectItem[] | null => {\n if (permissionsArray.length === 0) {\n return null;\n }\n\n // We get permissions applied to the current bucket\n const filteredPermissionsForBucket = permissionsArray.filter(\n (permissionItem) =>\n permissionItem.resource.endsWith(`:${bucketName}`) ||\n permissionItem.resource.includes(`:${bucketName}/`)\n );\n\n // No permissions for this bucket. we can throw the error message at this point\n if (filteredPermissionsForBucket.length === 0) {\n return null;\n }\n\n const returnElements: BucketObjectItem[] = [];\n\n // We split current path\n const splitCurrentPath = currentPath.split(\"/\");\n\n filteredPermissionsForBucket.forEach((permissionElement) => {\n // We review paths in resource address\n\n // We split ARN & get the last item to check the URL\n const splitARN = permissionElement.resource.split(\":\");\n const urlARN = splitARN.pop() || \"\";\n\n // We split the paths of the URL & compare against current location to see if there are more items to include. In case current level is a wildcard or is the last one, we omit this validation\n\n const splitURLARN = urlARN.split(\"/\");\n\n // splitURL has more items than bucket name, we can continue validating\n if (splitURLARN.length > 1) {\n splitURLARN.every((currentElementInPath, index) => {\n // It is a wildcard element. We can stor the verification as value should be included (?)\n if (currentElementInPath === \"*\") {\n return false;\n }\n\n // Element is not included in the path. The user is trying to browse something else.\n if (\n splitCurrentPath[index] &&\n splitCurrentPath[index] !== currentElementInPath\n ) {\n return false;\n }\n\n // This element is not included by index in the current paths list. We add it so user can browse into it\n if (!splitCurrentPath[index]) {\n returnElements.push({\n name: `${currentElementInPath}/`,\n size: 0,\n last_modified: new Date(),\n version_id: \"\",\n });\n }\n\n return true;\n });\n }\n\n // We review prefixes in allow resources for StringEquals variant only.\n if (\n permissionElement.conditionOperator === \"StringEquals\" ||\n permissionElement.conditionOperator === \"StringLike\"\n ) {\n permissionElement.prefixes.forEach((prefixItem) => {\n // Prefix Item is not empty?\n if (prefixItem !== \"\") {\n const splitItems = prefixItem.split(\"/\");\n\n let pathToRouteElements: string[] = [];\n\n splitItems.every((splitElement, index) => {\n if (!splitElement.includes(\"*\") && splitElement !== \"\") {\n if (splitElement !== splitCurrentPath[index]) {\n returnElements.push({\n name: `${pathToRouteElements.join(\"/\")}${\n pathToRouteElements.length > 0 ? \"/\" : \"\"\n }${splitElement}/`,\n size: 0,\n last_modified: new Date(),\n version_id: \"\",\n });\n return false;\n }\n if (splitElement !== \"\") {\n pathToRouteElements.push(splitElement);\n }\n\n return true;\n }\n return false;\n });\n }\n });\n }\n });\n\n return returnElements;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { LoginMinIOLogo } from \"../../../../icons\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\n\ninterface IAutoColorIcon {\n marginRight: number;\n marginTop: number;\n}\n\nconst AutoColorIcon = ({ marginRight, marginTop }: IAutoColorIcon) => {\n let tinycolor = require(\"tinycolor2\");\n\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const isDark =\n tinycolor(colorVariants?.backgroundColor || \"#fff\").getBrightness() <= 128;\n\n return (\n \n );\n};\n\nexport default AutoColorIcon;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n

{actionButton}
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } 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, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\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 noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\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 dispatch(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 if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\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 InputAdornment from \"@mui/material/InputAdornment\";\nimport SearchIcon from \"../../../icons/SearchIcon\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\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, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { CopyIcon } from \"../../../icons\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["CreatePathModal","withSuspense","React","withStyles","theme","createStyles","objectBrowserCommon","slashSpacingStyle","margin","classes","bucketName","internalPaths","existingFiles","hidePathButton","additionalOptions","dispatch","useAppDispatch","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","useState","createFolderOpen","setCreateFolderOpen","canCreatePath","hasPermission","IAM_SCOPES","paths","splitPaths","split","filter","path","lastBreadcrumbsIndex","length","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","Fragment","className","style","cursor","to","onClick","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","breadcrumbsMain","modalOpen","folderName","onClose","Grid","item","xs","breadcrumbs","IconButton","sx","border","backgroundColor","borderLeft","borderRadius","width","height","marginRight","breadcrumbsList","dir","text","id","icon","fill","marginTop","variant","setSnackBarMessage","color","TooltipWrapper","tooltip","permissionTooltipHelper","disabled","whiteSpace","label","breadcrumbsSecond","listUploadIcons","uploadPath","forceDisable","uploadFileFunction","uploadFolderFunction","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","undefined","event","currentTarget","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","useStyles","makeStyles","detailsList","borderColor","borderWidth","borderStyle","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","closePanel","right","top","children","months","value","days","Array","from","_","num","currentYear","Date","getFullYear","years","numYear","SelectStyled","root","input","borderBottom","fontSize","InputBase","DateSelector","forwardRef","ref","disableOptions","addSwitch","onDateChange","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","month","setMonth","day","setDay","year","setYear","useEffect","valueSplit","parseInt","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","isValid","isDateDisabled","clsx","fieldContainer","fieldContainerBorder","labelContainer","container","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","FormSwitchWrapper","indicatorLabels","checked","name","onChange","e","target","switchOnly","FormControl","dateInput","Select","displayEmpty","option","dayNumber","fieldBasic","tooltipHelper","flex","display","alignItems","justifyContent","paddingBottom","marginBottom","formFieldStyles","modalStyleUtils","spacingUtils","dateSelector","paddingLeft","closeModalAndRefresh","objectInfo","statusEnabled","setStatusEnabled","type","setType","date","setDate","isDateValid","setIsDateValid","isSaving","setIsSaving","alreadyConfigured","setAlreadyConfigured","retention_mode","toLowerCase","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","ModalWrapper","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","formFieldRow","RadioGroupSelector","currentSelection","selectorOptions","modalButtonBar","selectedObject","versionId","version_id","expireDate","api","expires","mode","then","res","catch","error","setModalErrorSnackMessage","addRetention","disableRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioning","selectedVersion","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","ConfirmDialog","confirmText","isOpen","titleIcon","isLoading","onConfirm","recursive","decodeURLString","endsWith","confirmationContent","DialogContentText","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","propertiesIcon","capitalizeFirst","textTransform","titleItem","detailsPanel","linear","metaData","setMetaData","metadata","invokeMetaDataApi","metaKeys","Object","keys","loadMetaData","useCallback","element","renderItem","isArray","decodeURIComponent","Box","metadataLinear","Table","table","TableBody","TableRow","TableCell","component","scope","align","padding","fontWeight","restProps","Button","startIcon","items","titleLabel","objectActions","actionItem","action","fileName","minHeight","fileNameText","overflow","textOverflow","strings","FileBookIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileImageIcon","FileLockIcon","FileMissingIcon","FileMusicIcon","FilePdfIcon","FilePptIcon","FileTxtIcon","FileVideoIcon","FileXlsIcon","FileZipIcon","extensionToIcon","extensions","displayFileIconName","returnOnlyIcon","elementString","ObjectBrowserIcon","ObjectBrowserFolderIcon","lowercaseElement","etc","ext","indexOf","splitItem","newTileHeader","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","currentItem","pop","tagsFor","plural","cleanObject","verID","SecureComponent","scopes","resource","flexFlow","tagKey","tag","matchAll","errorProps","deleteIcon","onDelete","Chip","size","Close","onDeleteTag","InputBoxWrapper","placeholder","trim","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","url","fetch","method","performInspect","file","volume","urlOfInspectApi","ok","json","resErr","errorMessage","message","detailedError","code","blob","filename","headers","decryptKey","getCookieValue","performDownload","deleteCookie","KeyRevealer","containerForHeader","spacing","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","identityDownload","getTime","Math","random","ID","makeid","downloadCall","download","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","done","percentage","prefix","waitingForFile","failed","cancelled","doDownload","modalFormScrollable","emptyFile","is_latest","last_modified","legal_hold_status","ObjectDetailsTitle","objectNameContainer","headerForSection","buttonsStyles","actionsTray","textStyleUtils","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","allInfoElements","setAllInfoElements","objectToShare","setObjectToShare","versions","setVersions","setDeleteOpen","previewOpen","setPreviewOpen","totalVersionsSize","setTotalVersionsSize","longFileOpen","setLongFileOpen","objectNameArray","infoElement","find","el","result","tVersionSize","reduce","acc","currValue","setLoadingObjectInfo","console","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","canSetTags","canChangeRetention","canInspect","canChangeVersioning","canGetObject","canDelete","multiActionButtons","object","getClientOS","includes","downloadObject","is_delete_marker","extensionPreview","ShareFile","dataObject","updateInfo","closeAndReload","setLoadingVersions","setSelectedVersion","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","iconLocation","fullWidth","detailContainer","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","displayParsedDate","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","contentTextAlign","rewindModeColumns","modalBasic","versionID","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","confirmButtonProps","wrapText","bgColor","mainFileVersionItem","intermediateLayer","borderBottomColor","versionContainer","buttonContainer","maxWidth","versionData","ctrItem","content","left","collapsableInfo","flexDirection","versionItem","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","md","CheckboxWrapper","stopPropagation","overrideCheckboxStyles","noTopMargin","button","buttonDisabled","setDeleteLoading","typeConfirm","setTypeConfirm","selectedVersions","selectedObjectsRequest","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","bottom","sortByLabel","hrClass","tableStyles","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","LinearProgress","ScreenTitle","listIcon","titleSpacer","subTitle","bucketDetails","detailsSpacer","actions","SelectWrapper","options","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","HistoryIcon","RefreshIcon","DeleteIcon","DeleteMultipleObjects","RewindEnable","browsePaper","backgroundImage","badgeOverlap","screenTitle","paddingTop","paddingRight","searchField","labelStyle","breadcrumbsContainer","parentWrapper","fullContainer","hideListOnSmall","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","defLoading","Typography","params","useParams","location","useLocation","rewindDate","dateToRewind","bucketToRewind","searchObjects","showDeleted","detailsOpen","objectDetailsOpen","selectedInternalPaths","loading","loadingObjects","simplePath","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","allowResources","session","features","selFeatures","obOnly","records","setRecords","deleteMultipleOpen","setDeleteMultipleOpen","loadingStartTime","setLoadingStartTime","loadingMessage","setLoadingMessage","loadingVersioning","setLoadingVersioning","isVersioned","setIsVersioned","loadingLocking","setLoadingLocking","lockingEnabled","setLockingEnabled","rewindSelect","setRewindSelect","selectedObjects","setSelectedObjects","selectedPreview","setSelectedPreview","sortDirection","setSortDirection","currentSortField","setCurrentSortField","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","downloadRenameModal","setDownloadRenameModal","pathSegment","pathname","fileUpload","folderUpload","setAttribute","quotaVals","setObjectDetailsView","displayDeleteObject","displayListObjects","setBucketDetailsLoad","callback","delay","savedCallback","setInterval","clearInterval","useInterval","timeDelta","now","ceil","updateMessage","is_versioned","object_locking_enabled","decodedIPaths","setSelectedObjectView","setSimplePathHandler","setSearchObjects","setLoadingObjectsList","pathPrefix","decodedPath","currentTimestamp","urlTake","resetRewind","rewindParsed","currDateISO","objects","folders","files","forEach","record","recordsInElement","pathTest","found","pathPrefixChopped","i","parentPath","permitItems","permissionItems","setBucketInfo","handleUploadButton","newFiles","uploadObject","folderPath","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","encodedPath","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","detailedMessage","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","canUpload","newFolderPath","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","pageTitle","currentPath","sortASC","sortListObjects","payload","reverse","concat","canDownload","forceRefresh","splitURLS","URLItem","tableActions","idElement","newPath","sendOnlyId","itemsToDownload","filteredItem","fileObject","refresh","PageLayout","creation_date","access","actionsSection","Badge","badgeContent","invisible","multiple","closeMenu","click","tableBlock","borderTop","setShowDeletedObjects","overrideLabelClasses","overrideShowDeleted","TableWrapper","itemActions","columns","entityName","idField","customPaperHeight","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","onSelectAll","rowStyle","delete_flag","parentClassName","configureBucketAllowed","searchBar","SearchBox","setSearchVersions","AutoColorIcon","PageHeader","BackLink","IAM_PAGES","IAM_PERMISSIONS","IAM_ROLES","SettingsIcon","middleComponent","dateInputContainer","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","moment","dateSelected","setDateSelected","hours","minutes","add","calculateNewTime","format","valid","extraInputProps","min","max","noLabelMinWidth","validityLabel","CopyIcon","shareLinkInfo","copyShareLink","copyShareLinkInput","copyShareLinkBtn","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","dateContainer","newDate","PredefinedList","actionButton","setModalSnackMessage","iframeContainer","iframeBase","iframeHidden","isFullscreen","setLoading","basename","document","baseURI","replace","window","origin","objectType","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","allowTransparency","wideLimit","PreviewFileContent","fileSize","overrideFileName","progressCallback","completeCallback","errorCallback","abortCallback","anchor","createElement","body","appendChild","req","evt","percentComplete","round","responseType","onreadystatechange","readyState","rspHeader","getResponseHeader","link","href","URL","createObjectURL","removeChild","rspBody","fileExtension","fieldSort","localeCompare","permissionsArray","filteredPermissionsForBucket","permissionItem","returnElements","splitCurrentPath","permissionElement","splitURLARN","every","currentElementInPath","conditionOperator","prefixes","prefixItem","splitItems","pathToRouteElements","splitElement","tinycolor","require","colorVariants","system","overrideStyles","isDark","getBrightness","WrappedComponent","fallback","ComponentWithSuspense","props","Suspense","predefinedList","multiLine","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","deleteDialogStyles","customDialogSize","snackBarCommon","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","modalSnackBar","customSize","paper","detailedErrorMsg","scroll","reason","titleText","closeContainer","closeButton","disableRipple","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","adornment","adornmentPosition","overrideClass","inputProps","disableUnderline","InputProps","cloneElement","shown","setShown","sm","overlayIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js b/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js deleted file mode 100644 index 436afaac9..000000000 --- a/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1379],{41379:function(e,n,t){t.r(n),t.d(n,{default:function(){return Qn}});var i=t(1413),a=t(72791),o=t(60364),s=t(16871),r=t(11135),c=t(25787),l=t(61889),d=t(25469),u=t(23814),h=t(93433),m=t(29439),f=t(57831),p=t(75952),x=t(26181),v=t.n(x),b=t(81207),g=t(92983),j=t(45248),Z=t(20890),w=t(84697),C=t(78029),S=t.n(C),y=t(43504),N=t(13400),_=t(20068),T=t(38734),E=t(38442),I=t(56087),k=t(75578),F=t(87995),P=t(54756),L=t(80184),O=(0,k.Z)(a.lazy((function(){return t.e(2185).then(t.bind(t,62185))}))),D=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)({},u.cx),{},{slashSpacingStyle:{margin:"0 5px"}}))}))((function(e){var n=e.classes,t=e.bucketName,i=e.internalPaths,r=e.existingFiles,c=e.hidePathButton,u=e.additionalOptions,f=(0,d.TL)(),x=(0,s.s0)(),v=(0,o.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),b=(0,o.v9)((function(e){return e.objectBrowser.versionsMode})),g=(0,o.v9)((function(e){return e.objectBrowser.versionedFile})),Z=(0,a.useState)(!1),w=(0,m.Z)(Z,2),C=w[0],k=w[1],D=i;""!==i&&(D="/".concat(i));var B=D.split("/").filter((function(e){return""!==e})),R=B.length-1,z=B.map((function(e,i){var o="".concat(B.slice(0,i+1).join("/"),"/"),s="/buckets/".concat(t,"/browse/").concat(o?"".concat((0,j.LL)(o)):"");return i===R&&e===g?null:(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)("span",{className:n.slashSpacingStyle,children:"/"}),i===R?(0,L.jsx)("span",{style:{cursor:"default"},children:e}):(0,L.jsx)(y.rU,{to:s,onClick:function(){f((0,P.db)({status:!1,objectName:""}))},children:e})]},"breadcrumbs-".concat(i.toString()))})),A=[];b&&(A=[(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)("span",{children:[(0,L.jsx)("span",{className:n.slashSpacingStyle,children:"/"}),g," - Versions"]})},"breadcrumbs-versionedItem")]);var M=[(0,L.jsx)(a.Fragment,{children:(0,L.jsx)(y.rU,{to:"/buckets/".concat(t,"/browse"),onClick:function(){f((0,P.db)({status:!1,objectName:""}))},children:t})},"breadcrumbs-root-path")].concat((0,h.Z)(z),(0,h.Z)(A));return(0,L.jsxs)(a.Fragment,{children:[(0,L.jsxs)("div",{className:n.breadcrumbsMain,children:[C&&(0,L.jsx)(O,{modalOpen:C,bucketName:t,folderName:i,onClose:function(){k(!1)},existingFiles:r}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.breadcrumbs),children:[(0,L.jsx)(N.Z,{onClick:function(){b?f((0,P.db)({status:!1,objectName:""})):x(-1)},sx:{border:"#EAEDEE 1px solid",backgroundColor:"#fff",borderLeft:0,borderRadius:0,width:38,height:38,marginRight:"10px"},children:(0,L.jsx)(T.ubh,{})}),(0,L.jsx)("div",{className:n.breadcrumbsList,dir:"rtl",children:M}),(0,L.jsx)(S(),{text:"".concat(t,"/").concat(B.join("/")),children:(0,L.jsx)(p.z,{id:"copy-path",icon:(0,L.jsx)(T.TIy,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:function(){f((0,F.y1)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,L.jsx)("div",{className:n.additionalOptions,children:u})]}),!c&&(0,L.jsx)(_.Z,{title:"Choose or create a new path",children:(0,L.jsx)(p.z,{id:"new-path",onClick:function(){k(!0)},disabled:v||!(0,E.F)(t,[I.Ft.S3_PUT_OBJECT]),icon:(0,L.jsx)(T.N$q,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,L.jsx)("div",{className:n.breadcrumbsSecond,children:u})]})})),B=t(47922),R=t(14917),z=t(74794),A=t(71715),M=t(23786),U=t(49900),G=t(57064),W=t(27454),H=(0,c.Z)((function(e){return(0,r.Z)({listUploadIcons:{height:20,"& .min-icon":{width:18,fill:"rgba(0,0,0,0.87)"}}})}))((function(e){var n=e.uploadPath,t=e.bucketName,i=e.forceDisable,o=void 0!==i&&i,s=e.uploadFileFunction,r=e.uploadFolderFunction,c=e.classes,l=a.useState(null),d=(0,m.Z)(l,2),u=d[0],h=d[1],f=Boolean(u),x=function(){h(null)},v=(0,E.F)(n,[I.Ft.S3_PUT_OBJECT]),b=(0,E.F)(t,[I.Ft.S3_PUT_OBJECT],!1,!0),g=v||b;return(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)(W.Z,{tooltip:"Upload Files",children:(0,L.jsx)(p.z,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:function(e){h(e.currentTarget)},label:"Upload",icon:(0,L.jsx)(T.rG2,{}),variant:"callAction",disabled:o||!g})}),(0,L.jsxs)(A.Z,{id:"upload-main-menu","aria-labelledby":"upload-main",anchorEl:u,open:f,onClose:function(){x()},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[(0,L.jsxs)(M.Z,{onClick:function(){s(x)},disabled:!v||o,children:[(0,L.jsx)(G.Z,{className:c.listUploadIcons,children:(0,L.jsx)(T.rG2,{})}),(0,L.jsx)(U.Z,{children:"Upload File"})]}),(0,L.jsxs)(M.Z,{onClick:function(){r(x)},disabled:!b||o,children:[(0,L.jsx)(G.Z,{className:c.listUploadIcons,children:(0,L.jsx)(T.oXh,{})}),(0,L.jsx)(U.Z,{children:"Upload Folder"})]})]})]})})),K=t(72455),V=(0,K.Z)((function(e){return(0,r.Z)({detailsList:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},closePanel:{position:"absolute",right:0,top:8,"& .min-icon":{width:14}}})})),Y=function(e){var n=e.open,t=e.closePanel,i=e.className,a=void 0===i?"":i,o=e.children,s=V();return(0,L.jsxs)(l.ZP,{item:!0,className:"".concat(s.detailsList," ").concat(n?"open":""," ").concat(a," detailsListPanel"),children:[(0,L.jsx)(N.Z,{onClick:t,className:s.closePanel,children:(0,L.jsx)(T.oto,{})}),o]})},J=t(64554),q=t(25183),X=t(34433),$=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],Q=Array.from(Array(31),(function(e,n){return n+1})),ee=(new Date).getFullYear(),ne=Array.from(Array(25),(function(e,n){return n+ee})),te=t(56028),ie=t(37516),ae=t(83679),oe=t(4942),se=t(28182),re=t(30829),ce=t(68096),le=t(58406),de=t(4834),ue=t(84570),he=(0,c.Z)((function(e){return(0,r.Z)({root:{"& .MuiSelect-icon":{color:"#000","&.Mui-disabled":{color:"#9c9c9c"}}},input:{borderBottom:0,fontSize:12}})}))(de.ZP),me=(0,a.forwardRef)((function(e,n){var t=e.classes,i=e.id,o=e.label,s=e.disableOptions,r=void 0!==s&&s,c=e.addSwitch,d=void 0!==c&&c,u=e.tooltip,h=void 0===u?"":u,f=e.borderBottom,p=void 0!==f&&f,x=e.onDateChange,v=e.value,b=void 0===v?"":v;(0,a.useImperativeHandle)(n,(function(){return{resetDate:B}}));var g=(0,a.useState)(!1),j=(0,m.Z)(g,2),Z=j[0],w=j[1],C=(0,a.useState)(""),S=(0,m.Z)(C,2),y=S[0],N=S[1],T=(0,a.useState)(""),E=(0,m.Z)(T,2),I=E[0],k=E[1],F=(0,a.useState)(""),P=(0,m.Z)(F,2),O=P[0],D=P[1];(0,a.useEffect)((function(){if(""!==b){var e=b.split("-");D(e[0]),N(e[1]),k("".concat(parseInt(e[2])))}}),[b]),(0,a.useEffect)((function(){var e=function(e,n,t){var i=Date.parse("".concat(e,"-").concat(n,"-").concat(t));if(isNaN(i))return[!1,""];var a=parseInt(n),o=parseInt(t),s=a<10?"0".concat(a):a,r=o<10?"0".concat(o):o,c=new Date(i).toISOString().split("T")[0],l="".concat(e,"-").concat(s,"-").concat(r);return[c===l,l]}(O,y,I),n=(0,m.Z)(e,2),t=n[0],i=n[1];x(i,t)}),[y,I,O,x]);var B=function(){N(""),k(""),D("")},R=function(){return r||!!d&&!Z};return(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:(0,se.Z)(t.fieldContainer,(0,oe.Z)({},t.fieldContainerBorder,p)),children:[(0,L.jsx)("div",{className:t.labelContainer,children:(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsxs)(re.Z,{htmlFor:i,className:t.inputLabel,children:[(0,L.jsx)("span",{children:o}),""!==h&&(0,L.jsx)("div",{className:t.tooltipContainer,children:(0,L.jsx)(_.Z,{title:h,placement:"top-start",children:(0,L.jsx)("div",{className:t.tooltip,children:(0,L.jsx)(ue.Z,{})})})})]}),d&&(0,L.jsx)(ie.Z,{indicatorLabels:["Specific Date","Default (7 Days)"],checked:Z,value:"date_enabled",id:"date-status",name:"date-status",onChange:function(e){w(e.target.checked),e.target.checked||x("",!0)},switchOnly:!0})]})}),(0,L.jsxs)("div",{children:[(0,L.jsx)(ce.Z,{disabled:R(),className:t.dateInput,children:(0,L.jsxs)(le.Z,{id:"".concat(i,"-month"),name:"".concat(i,"-month"),value:y,displayEmpty:!0,onChange:function(e){N(e.target.value)},input:(0,L.jsx)(he,{}),children:[(0,L.jsx)(M.Z,{value:"",disabled:!0,children:""}),$.map((function(e){return(0,L.jsx)(M.Z,{value:e.value,children:e.label},"select-".concat(i,"-monthOP-").concat(e.label))}))]})}),(0,L.jsx)(ce.Z,{disabled:R(),className:t.dateInput,children:(0,L.jsxs)(le.Z,{id:"".concat(i,"-day"),name:"".concat(i,"-day"),value:I,displayEmpty:!0,onChange:function(e){k(e.target.value)},input:(0,L.jsx)(he,{}),children:[(0,L.jsx)(M.Z,{value:"",disabled:!0,children:""}),Q.map((function(e){return(0,L.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-dayOP-").concat(e))}))]})}),(0,L.jsx)(ce.Z,{disabled:R(),className:t.dateInput,children:(0,L.jsxs)(le.Z,{id:"".concat(i,"-year"),name:"".concat(i,"-year"),value:O,displayEmpty:!0,onChange:function(e){D(e.target.value)},input:(0,L.jsx)(he,{}),children:[(0,L.jsx)(M.Z,{value:"",disabled:!0,children:""}),ne.map((function(e){return(0,L.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-yearOP-").concat(e))}))]})})]})]})})),fe=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({dateInput:{"&:not(:last-child)":{marginRight:22}}},u.YI),u.Hr),{},{labelContainer:{flex:1},fieldContainer:(0,i.Z)((0,i.Z)({},u.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),fieldContainerBorder:{borderBottom:"#9c9c9c 1px solid",marginBottom:20}}))}))(me),pe=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK),{},{dateSelector:{"& div":{borderBottom:0,marginBottom:0,"& div:nth-child(2)":{border:"1px solid #EAEAEA",paddingLeft:5,"& div":{border:0}}}}}))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,s=e.objectInfo,r=e.bucketName,c=(0,d.TL)(),u=(0,a.useState)(!0),h=(0,m.Z)(u,2),f=h[0],x=h[1],v=(0,a.useState)(""),g=(0,m.Z)(v,2),Z=g[0],w=g[1],C=(0,a.useState)(""),S=(0,m.Z)(C,2),y=S[0],N=S[1],_=(0,a.useState)(!1),T=(0,m.Z)(_,2),E=T[0],I=T[1],k=(0,a.useState)(!1),P=(0,m.Z)(k,2),O=P[0],D=P[1],B=(0,a.useState)(!1),R=(0,m.Z)(B,2),z=R[0],A=R[1];(0,a.useEffect)((function(){if(s.retention_mode&&(w(s.retention_mode.toLowerCase()),A(!0)),s.retention_until_date){var e=new Date(s.retention_until_date);if("Invalid Date"!==e.toString()){var n=e.getFullYear(),t=(a=e.getMonth()+1)<10?"0".concat(a):"".concat(a),i=e.getDate();isNaN(i)||"NaN"===t||isNaN(n)||N("".concat(n,"-").concat(t,"-").concat(i))}A(!0)}var a}),[s]);var M=(0,a.useRef)(null),U=function(){x(!1),w(""),M.current&&M.current.resetDate()},G=z&&("governance"===Z||""===Z);return(0,L.jsxs)(te.Z,{title:"Set Retention Policy",modalOpen:t,onClose:function(){U(),i(!1)},children:[(0,L.jsxs)("div",{className:n.spacerBottom,children:[(0,L.jsx)("strong",{children:"Selected Object"}),": ",o]}),(0,L.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:[G&&(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,L.jsx)(ie.Z,{value:"status",id:"status",name:"status",checked:f,onChange:function(e){x(!f)},label:"Status",indicatorLabels:["Enabled","Disabled"]})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,L.jsx)(ae.Z,{currentSelection:Z,id:"type",name:"type",label:"Type",disableOptions:!f||z&&""!==Z,onChange:function(e){w(e.target.value)},selectorOptions:[{label:"Governance",value:"governance"},{label:"Compliance",value:"compliance"}]})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(n.dateSelector," "),children:(0,L.jsx)(fe,{id:"date",label:"Date",disableOptions:!(f&&("governance"===Z||"compliance"===Z)),ref:M,value:y,borderBottom:!0,onDateChange:function(e,n){I(n),n&&N(e)}})}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,L.jsx)(p.z,{id:"reset",type:"button",variant:"regular",onClick:U,label:"Reset"}),(0,L.jsx)(p.z,{id:"save",type:"submit",variant:"callAction",disabled:f&&""===Z||f&&!E||O,onClick:function(){D(!0);var e=s.name,n=s.version_id,t=f||"governance"!==Z?"".concat(y,"T23:59:59Z"):"";f||"governance"!==Z?function(e,n,t){b.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/objects/retention?prefix=").concat((0,j.LL)(e),"&version_id=").concat(n),{expires:t,mode:Z}).then((function(e){D(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),D(!1)}))}(e,n,t):function(e,n){b.Z.invoke("DELETE","/api/v1/buckets/".concat(r,"/objects/retention?prefix=").concat((0,j.LL)(e),"&version_id=").concat(n)).then((function(){D(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),D(!1)}))}(e,n)},label:"Save"})]})]})]})})),xe=t(51691),ve=t(23508),be=t(9505),ge=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=e.versioning,r=e.selectedVersion,c=void 0===r?"":r,l=(0,d.TL)(),u=(0,be.Z)((function(){return n(!0)}),(function(e){return l((0,F.Ih)(e))})),h=(0,m.Z)(u,2),f=h[0],p=h[1],x=(0,a.useState)(!1),v=(0,m.Z)(x,2),b=v[0],g=v[1];if(!o)return null;return(0,L.jsx)(ve.Z,{title:"Delete Object",confirmText:"Delete",isOpen:t,titleIcon:(0,L.jsx)(T.NvT,{}),isLoading:f,onConfirm:function(){var e=(0,j.IO)(o).endsWith("/");p("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o).concat(""!==c?"&version_id=".concat(c):"&recursive=".concat(e,"&all_versions=").concat(b)))},onClose:function(){return n(!1)},confirmationContent:(0,L.jsxs)(xe.Z,{children:["Are you sure you want to delete: ",(0,L.jsx)("br",{}),(0,L.jsx)("b",{children:(0,j.IO)(o)})," ",""!==c?(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)("br",{}),(0,L.jsx)("br",{}),"Version ID:",(0,L.jsx)("br",{}),(0,L.jsx)("strong",{children:c})]}):"","? ",(0,L.jsx)("br",{}),(0,L.jsx)("br",{}),s&&""===c&&(0,L.jsx)(ie.Z,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:b,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:function(e){g(!b)},description:""})]})})},je=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,s=e.bucketName,r=e.actualInfo,c=(0,d.TL)(),u=(0,a.useState)(!1),h=(0,m.Z)(u,2),f=h[0],x=h[1],g=(0,a.useState)(!1),Z=(0,m.Z)(g,2),w=Z[0],C=Z[1],S=r.version_id;(0,a.useEffect)((function(){var e=v()(r,"legal_hold_status","OFF");x("ON"===e)}),[r]);var y=function(){x(!1)};return(0,L.jsxs)(te.Z,{title:"Set Legal Hold",modalOpen:t,onClose:function(){y(),i(!1)},children:[(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.spacerBottom,children:["Object: ",s]}),(0,L.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),C(!0),b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/legalhold?prefix=").concat((0,j.LL)(o),"&version_id=").concat(S),{status:f?"enabled":"disabled"}).then((function(){C(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),C(!1)}))}(e)},children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,L.jsx)(ie.Z,{value:"legalhold",id:"legalhold",name:"legalhold",checked:f,onChange:function(e){x(!f)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"})}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,L.jsx)(p.z,{id:"clear",type:"button",variant:"regular",onClick:y,label:"Clear"}),(0,L.jsx)(p.z,{id:"save",type:"submit",variant:"callAction",disabled:w,label:" Save"})]})]})]})})),Ze=t(78562),we=t(79836),Ce=t(53382),Se=t(35855),ye=t(53994),Ne=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)({propertiesIcon:{marginLeft:5,"& .min-icon":{height:12}},capitalizeFirst:{textTransform:"capitalize","& .min-icon":{width:16,height:16}},titleItem:{width:"35%"}},u.bK),u.$b))}))((function(e){var n=e.bucketName,t=e.internalPaths,i=e.classes,o=e.actualInfo,s=e.linear,r=void 0!==s&&s,c=(0,a.useState)({}),d=(0,m.Z)(c,2),u=d[0],h=d[1],f=(0,be.Z)((function(e){var n=v()(e,"objectMetadata",{});h(n)}),(function(e){return!1})),p=(0,m.Z)(f,2)[1],x=Object.keys(u),b=(0,a.useCallback)((function(){p("GET","/api/v1/buckets/".concat(n,"/objects/metadata?prefix=").concat(t))}),[n,t,o]);return(0,a.useEffect)((function(){o&&b()}),[o,b]),r?(0,L.jsx)(a.Fragment,{children:x.map((function(e,n){var t=Array.isArray(u[e])?u[e].map(decodeURIComponent).join(", "):decodeURIComponent(u[e]);return(0,L.jsxs)(J.Z,{className:i.metadataLinear,children:[(0,L.jsx)("strong",{children:e}),(0,L.jsx)("br",{}),t]},"box-meta-".concat(e,"-").concat(n.toString()))}))}):(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,sx:{marginTop:"25px",marginBottom:"5px"},children:(0,L.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Object Metadata"})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,children:(0,L.jsx)(we.Z,{className:i.table,"aria-label":"simple table",children:(0,L.jsx)(Ce.Z,{children:x.map((function(e,n){var t=Array.isArray(u[e])?u[e].map(decodeURIComponent).join(", "):decodeURIComponent(u[e]);return(0,L.jsxs)(Se.Z,{children:[(0,L.jsx)(ye.Z,{component:"th",scope:"row",className:i.titleItem,children:e}),(0,L.jsx)(ye.Z,{align:"right",children:t})]},"tRow-".concat(n.toString()))}))})})})]})})),_e=t(45987),Te=t(36151),Ee=["disabled","onClick","icon","label","classes"],Ie=(0,c.Z)((function(e){return(0,r.Z)({root:{padding:"0 15px",height:22,margin:0,color:"#5E5E5E",fontWeight:"normal",fontSize:14,whiteSpace:"nowrap",width:"100%",justifyContent:"flex-start","&:hover":{backgroundColor:"transparent",color:"#000"},"& .min-icon":{width:11},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}}})}))((function(e){var n=e.disabled,t=e.onClick,a=e.icon,o=e.label,s=e.classes,r=(0,_e.Z)(e,Ee);return(0,L.jsx)(Te.Z,(0,i.Z)((0,i.Z)({},r),{},{disabled:n,onClick:t,className:(0,se.Z)(s.root,"noDefaultHeight"),startIcon:a,sx:{height:"initial"},children:(0,L.jsx)("span",{className:"buttonItem",children:o})}))})),ke=(0,c.Z)((function(){return(0,r.Z)((0,i.Z)({},u.$b))}))((function(e){var n=e.items,t=e.classes,i=e.title;return(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)("div",{className:t.titleLabel,children:i}),(0,L.jsxs)("ul",{className:t.objectActions,children:[(0,L.jsx)("li",{children:"Actions:"}),n.map((function(e,n){return(0,L.jsx)("li",{children:(0,L.jsx)(Ie,{label:e.label,icon:e.icon,onClick:e.action,disabled:e.disabled})},"action-element-".concat(n.toString()))}))]})]})})),Fe=t(37762),Pe=t(71863),Le=t(82314),Oe=(0,c.Z)((function(e){return(0,r.Z)({fileName:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16}},fileNameText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}})}))((function(e){var n=e.classes,t=e.icon,i=e.strings;return(0,L.jsxs)("div",{className:n.fileName,children:[t,(0,L.jsx)("span",{className:n.fileNameText,children:i[i.length-1]})]})})),De=a.lazy((function(){return Promise.resolve().then(t.bind(t,76181))})),Be=a.lazy((function(){return Promise.resolve().then(t.bind(t,49563))})),Re=a.lazy((function(){return Promise.resolve().then(t.bind(t,21733))})),ze=a.lazy((function(){return Promise.resolve().then(t.bind(t,95232))})),Ae=a.lazy((function(){return Promise.resolve().then(t.bind(t,27529))})),Me=a.lazy((function(){return Promise.resolve().then(t.bind(t,60527))})),Ue=a.lazy((function(){return Promise.resolve().then(t.bind(t,69812))})),Ge=a.lazy((function(){return Promise.resolve().then(t.bind(t,46454))})),We=a.lazy((function(){return Promise.resolve().then(t.bind(t,84820))})),He=a.lazy((function(){return Promise.resolve().then(t.bind(t,40599))})),Ke=a.lazy((function(){return Promise.resolve().then(t.bind(t,72995))})),Ve=a.lazy((function(){return Promise.resolve().then(t.bind(t,34171))})),Ye=a.lazy((function(){return Promise.resolve().then(t.bind(t,30745))})),Je=a.lazy((function(){return Promise.resolve().then(t.bind(t,84033))})),qe=a.lazy((function(){return Promise.resolve().then(t.bind(t,52009))})),Xe=[{icon:(0,L.jsx)(Ye,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,L.jsx)(We,{}),extensions:["mp3","m4a","aac"]},{icon:(0,L.jsx)(He,{}),extensions:["pdf"]},{icon:(0,L.jsx)(Ke,{}),extensions:["ppt","pptx"]},{icon:(0,L.jsx)(Je,{}),extensions:["xls","xlsx"]},{icon:(0,L.jsx)(Ue,{}),extensions:["cer","crt","pem"]},{icon:(0,L.jsx)(Be,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,L.jsx)(Re,{}),extensions:["cfg","yaml"]},{icon:(0,L.jsx)(ze,{}),extensions:["sql"]},{icon:(0,L.jsx)(Ae,{}),extensions:["ttf","otf"]},{icon:(0,L.jsx)(Ve,{}),extensions:["txt"]},{icon:(0,L.jsx)(qe,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,L.jsx)(De,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,L.jsx)(Me,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],$e=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=e,i=(0,L.jsx)(Pe.Z,{});e.endsWith("/")&&(i=(0,L.jsx)(Le.Z,{}),t=e.slice(0,-1));var a,o=e.toLowerCase(),s=(0,Fe.Z)(Xe);try{for(s.s();!(a=s.n()).done;){var r,c=a.value,l=(0,Fe.Z)(c.extensions);try{for(l.s();!(r=l.n()).done;){var d=r.value;o.endsWith(".".concat(d))&&(i=c.icon)}}catch(h){l.e(h)}finally{l.f()}}}catch(h){s.e(h)}finally{s.f()}!e.endsWith("/")&&e.indexOf(".")<0&&(i=(0,L.jsx)(Ge,{}));var u=t.split("/");return n?i:(0,L.jsx)(Oe,{icon:i,strings:u})},Qe=t(21435),en=t(81918),nn=t(29823),tn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({newTileHeader:{fontSize:18,fontWeight:"bold",color:"#000",margin:"35px 0",paddingBottom:15,display:"flex",alignItems:"center","& > svg":{marginRight:10}},tagsForLabel:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},currentTagsContainer:{fontSize:14,fontWeight:"normal"},noTagsForObject:{color:"#858585"},deleteTag:{color:"#C83B51",marginLeft:5}},u.DF),u.ID),u.bK))}))((function(e){var n=e.modalOpen,t=e.onCloseAndUpdate,s=e.bucketName,r=e.actualInfo,c=e.classes,u=(0,d.TL)(),h=(0,o.v9)(F.N5),f=(0,a.useState)(""),x=(0,m.Z)(f,2),g=x[0],Z=x[1],w=(0,a.useState)(""),C=(0,m.Z)(w,2),S=C[0],y=C[1],N=(0,a.useState)(!1),_=(0,m.Z)(N,2),k=_[0],P=_[1],O=(0,a.useState)(!1),D=(0,m.Z)(O,2),B=D[0],R=D[1],z=(0,a.useState)(""),A=(0,m.Z)(z,2),M=A[0],U=A[1],G=(0,a.useState)(""),W=(0,m.Z)(G,2),H=W[0],K=W[1],V=(0,j.LL)(r.name),Y=r.tags,q=Object.keys(Y||{}),X=r.name.split("/").pop()||"",$=function(e){return(0,L.jsxs)("div",{className:c.tagsForLabel,children:["Tag",e?"s":""," for: ",(0,L.jsx)("strong",{children:X})]})};return(0,L.jsx)(a.Fragment,{children:(0,L.jsx)(te.Z,{modalOpen:n,title:B?(0,L.jsx)("span",{style:{color:"#C83B51"},children:"Delete Tag"}):"Edit Tags",onClose:function(){t(!0)},titleIcon:B?(0,L.jsx)(T.dRf,{style:{fill:"#C83B51"}}):(0,L.jsx)(T.T0F,{}),children:B?(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)(l.ZP,{container:!0,children:[$(!1),"Are you sure you want to delete the tag"," ",(0,L.jsxs)("b",{className:c.deleteTag,children:[M," : ",H]})," ","?",(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,L.jsx)(p.z,{id:"cancel",type:"button",variant:"regular",onClick:function(){U(""),K(""),R(!1)},label:"Cancel"}),(0,L.jsx)(p.z,{type:"submit",variant:"secondary",onClick:function(){var e=(0,i.Z)({},Y);delete e[M];var n=h?r.version_id:"null";b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/tags?prefix=").concat(V,"&version_id=").concat(n),{tags:e}).then((function(e){t(!0),P(!1)})).catch((function(e){u((0,F.zb)(e)),P(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsx)(E.s,{scopes:[I.Ft.S3_GET_OBJECT_TAGGING],resource:s,children:(0,L.jsxs)(J.Z,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[$(!0),(0,L.jsxs)("div",{className:c.currentTagsContainer,children:["Current Tags:",(0,L.jsx)("br",{}),0===q.length?(0,L.jsx)("span",{className:c.noTagsForObject,children:"There are no tags for this object"}):(0,L.jsx)(a.Fragment,{}),(0,L.jsx)(J.Z,{sx:{marginTop:"5px",marginBottom:"15px"},children:q.map((function(e,n){var t=v()(Y,"".concat(e),"");return""!==t?(0,L.jsx)(E.s,{scopes:[I.Ft.S3_DELETE_OBJECT_TAGGING],resource:s,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,L.jsx)(en.Z,{style:{textTransform:"none",marginRight:"5px",marginBottom:"5px"},size:"small",label:"".concat(e," : ").concat(t),color:"primary",deleteIcon:(0,L.jsx)(nn.Z,{}),onDelete:function(){!function(e,n){U(e),K(n),R(!0)}(e,t)}})},"chip-".concat(n)):null}))})]})]})}),(0,L.jsx)(E.s,{scopes:[I.Ft.S3_PUT_OBJECT_TAGGING],resource:s,errorProps:{disabled:!0,onClick:null},children:(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:c.newTileHeader,children:[(0,L.jsx)(T.OCT,{})," Add New Tag"]}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,L.jsx)(Qe.Z,{value:g,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:function(e){Z(e.target.value)}})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,L.jsx)(Qe.Z,{value:S,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:function(e){y(e.target.value)}})}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,L.jsx)(p.z,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){y(""),Z("")},label:"Clear"}),(0,L.jsx)(p.z,{type:"submit",variant:"callAction",disabled:""===S.trim()||""===g.trim()||k,onClick:function(){P(!0);var e={};e[g]=S;var n=(0,i.Z)((0,i.Z)({},Y),e),a=h?r.version_id:"null";b.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/tags?prefix=").concat(V,"&version_id=").concat(a),{tags:n}).then((function(e){t(!0),P(!1)})).catch((function(e){u((0,F.zb)(e)),P(!1)}))},id:"saveTag",label:"Save"})]})]})})]})})})})),an=t(74165),on=t(15861),sn=t(73669),rn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.closeInspectModalAndRefresh,i=e.inspectOpen,o=e.inspectPath,s=e.volumeName,r=(0,d.TL)(),c=function(){return t(!1)},u=(0,a.useState)(!0),h=(0,m.Z)(u,2),f=h[0],x=h[1],v=(0,a.useState)(""),b=(0,m.Z)(v,2),g=b[0],Z=b[1],w=(0,a.useState)(""),C=(0,m.Z)(w,2),S=C[0],y=C[1];if(!o)return null;var N=function(){var e=(0,on.Z)((0,an.Z)().mark((function e(n){return(0,an.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(n,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),_=function(){var e=(0,on.Z)((0,an.Z)().mark((function e(){var n,t,i;return(0,an.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,j.LL)(o+"/xl.meta"),t=(0,j.LL)(s),i="/api/v1/admin/inspect?volume=".concat(t,"&file=").concat(n,"&encrypt=").concat(f),N(i).then(function(){var e=(0,on.Z)((0,an.Z)().mark((function e(n){var t,i,a,o;return(0,an.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.ok){e.next=5;break}return e.next=3,n.json();case 3:t=e.sent,r((0,F.Ih)({errorMessage:t.message,detailedError:t.code}));case 5:return e.next=7,n.blob();case 7:if(i=e.sent,a=n.headers.get("content-disposition").split('"')[1],o=(0,j.Do)(a)||"",(0,j.zZ)(i,a),y(a),""!==o){e.next=15;break}return c(),e.abrupt("return");case 15:Z(o);case 16:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()).catch((function(e){r((0,F.Ih)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,L.jsxs)(a.Fragment,{children:[!g&&(0,L.jsx)(te.Z,{modalOpen:i,titleIcon:(0,L.jsx)(q.Gp,{}),title:"Inspect Object",onClose:c,children:(0,L.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:["Would you like to encrypt ",(0,L.jsx)("b",{children:(0,j.IO)(o)}),"?"," ",(0,L.jsx)("br",{}),(0,L.jsx)(ie.Z,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:f,value:"encrypt",id:"encrypt",name:"encrypt",onChange:function(e){x(!f)},description:""}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,L.jsx)(p.z,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:_,label:"Inspect"})})]})}),g?(0,L.jsx)(te.Z,{modalOpen:i,title:"Inspect Decryption Key",onClose:function(){(0,j.kT)(S),c(),Z("")},titleIcon:(0,L.jsx)(T.tvm,{}),children:(0,L.jsxs)(xe.Z,{children:[(0,L.jsxs)(J.Z,{children:["This will be displayed only once. It cannot be recovered.",(0,L.jsx)("br",{}),"Use secure medium to share this key."]}),(0,L.jsx)(J.Z,{children:(0,L.jsx)(sn.Z,{value:g})})]})}):null]})})),cn=t(72401),ln=t(76610),dn=(0,K.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.ID),u.DF),u.bK),(0,u.Bz)(e.spacing(4))))})),un=function(e){var n=e.open,t=e.closeModal,i=e.currentItem,o=e.internalPaths,s=e.actualInfo,r=e.bucketName,c=dn(),u=(0,d.TL)(),h=(0,a.useState)(i),f=(0,m.Z)(h,2),x=f[0],v=f[1],b=(0,a.useState)(!1),g=(0,m.Z)(b,2),Z=g[0],w=g[1];return(0,L.jsxs)(te.Z,{title:"Rename Download",modalOpen:n,onClose:t,titleIcon:(0,L.jsx)(T.dY8,{}),children:[(0,L.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,L.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,L.jsx)("br",{}),(0,L.jsx)("br",{})," We recommend to rename the file download"]}),(0,L.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();var n=(0,j.LL)("".concat(r,"-").concat(s.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ln.YO)(8),a=(0,B.LR)(r,o,s.version_id,parseInt(s.size||"0"),x,i,(function(e){u((0,P.RO)({instanceID:n,progress:e}))}),(function(){u((0,P.oK)(n))}),(function(e){u((0,P.qJ)({instanceID:n,msg:e}))}),(function(){u((0,P.Im)(n))}));(0,ln.EN)(i,a),u((0,P.Mc)({ID:i,bucketName:r,done:!1,instanceID:n,percentage:0,prefix:x,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""})),t()}(e)},children:(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:c.modalFormScrollable,children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,L.jsx)(Qe.Z,{id:"download-filename",name:"download-filename",onChange:function(e){v(e.target.value)},label:"",type:"text",value:x,error:x.length>200&&!Z?"Filename should be less than 200 characters long.":""})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,L.jsx)(ie.Z,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:Z,onChange:function(e){w(e.target.checked),e.target.checked&&v(i)},label:"Use Original Name"})})]}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:(0,L.jsx)(p.z,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:x.length>200&&!Z,label:"Download File"})})]})})]})},hn={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},mn=(0,c.Z)((function(){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({ObjectDetailsTitle:{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},objectNameContainer:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},headerForSection:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:15,borderBottom:"#E2E2E2 2px solid",fontWeight:"bold",fontSize:18,color:"#000",margin:"20px 22px"},capitalizeFirst:{textTransform:"capitalize"}},u.Si),u.OR),u.bK),u.VI),u.$b))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=e.versioning,r=e.locking,c=e.onClosePanel,u=(0,d.TL)(),h=(0,o.v9)(F.N5),f=(0,o.v9)((function(e){return e.objectBrowser.versionsMode})),x=(0,o.v9)((function(e){return e.objectBrowser.selectedVersion})),g=(0,o.v9)((function(e){return e.objectBrowser.loadingObjectInfo})),Z=(0,a.useState)(!1),w=(0,m.Z)(Z,2),C=w[0],S=w[1],y=(0,a.useState)(!1),N=(0,m.Z)(y,2),_=N[0],k=N[1],O=(0,a.useState)(!1),D=(0,m.Z)(O,2),R=D[0],z=D[1],A=(0,a.useState)(!1),M=(0,m.Z)(A,2),U=M[0],G=M[1],W=(0,a.useState)(!1),H=(0,m.Z)(W,2),K=H[0],V=H[1],Y=(0,a.useState)(null),$=(0,m.Z)(Y,2),Q=$[0],ee=$[1],ne=(0,a.useState)([]),te=(0,m.Z)(ne,2),ie=te[0],ae=te[1],oe=(0,a.useState)(null),se=(0,m.Z)(oe,2),re=se[0],ce=se[1],le=(0,a.useState)([]),de=(0,m.Z)(le,2),ue=de[0],he=de[1],me=(0,a.useState)(!1),fe=(0,m.Z)(me,2),xe=fe[0],ve=fe[1],be=(0,a.useState)(!1),we=(0,m.Z)(be,2),Ce=we[0],Se=we[1],ye=(0,a.useState)(0),_e=(0,m.Z)(ye,2),Te=_e[0],Ee=_e[1],Ie=(0,a.useState)(!1),Fe=(0,m.Z)(Ie,2),Pe=Fe[0],Le=Fe[1],Oe=((0,j.IO)(t)||"").split("/").pop()||"",De=[];Q&&(De=Q.name.split("/")),(0,a.useEffect)((function(){if(h&&ie&&ie.length>=1){var e=ie.find((function(e){return e.is_latest}))||hn;""!==x&&(e=ie.find((function(e){return e.version_id===x}))||hn),ee(e)}}),[x,h,ie]),(0,a.useEffect)((function(){g&&""!==t&&b.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(h?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]);if(h){ae(n),he(n);var t=n.reduce((function(e,n){return null!==n&&void 0!==n&&n.size?e+n.size:e}),0);Ee(t)}else ee(n[0]),he([]);u((0,P.vH)(!1))})).catch((function(e){console.error("Error loading object details",e),u((0,P.vH)(!1))}))}),[g,i,t,u,h,x]);var Be=[];Q&&Q.tags&&(Be=Object.keys(Q.tags));var Re=(0,L.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,L.jsx)(cn.Z,{})});if(!Q)return g?Re:null;var ze=De.length>0?De[De.length-1]:Q.name,Ae=[i,Oe,[i,Q.name].join("/")],Me=[{action:function(){!function(e){var n=(0,j.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random()));if(e.name.length>200&&(0,j.mv)().toLowerCase().includes("win"))Le(!0);else{var a=(0,ln.YO)(8),o=(0,B.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,a,(function(e){u((0,P.RO)({instanceID:n,progress:e}))}),(function(){u((0,P.oK)(n))}),(function(e){u((0,P.qJ)({instanceID:n,msg:e}))}),(function(){u((0,P.Im)(n))}));(0,ln.EN)(a,o),u((0,P.Mc)({ID:a,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}}(Q)},label:"Download",disabled:!!Q.is_delete_marker||!(0,E.F)(Ae,[I.Ft.S3_GET_OBJECT]),icon:(0,L.jsx)(T._8t,{}),tooltip:"Download this Object"},{action:function(){S(!0)},label:"Share",disabled:!!Q.is_delete_marker||!(0,E.F)(Ae,[I.Ft.S3_GET_OBJECT]),icon:(0,L.jsx)(T.aAc,{}),tooltip:"Share this File"},{action:function(){Se(!0)},label:"Preview",disabled:!!Q.is_delete_marker||"none"===(0,B.Bg)(Oe)||!(0,E.F)(Ae,[I.Ft.S3_GET_OBJECT]),icon:(0,L.jsx)(T.P99,{}),tooltip:"Preview this File"},{action:function(){G(!0)},label:"Legal Hold",disabled:!r||!h||!!Q.is_delete_marker||!(0,E.F)(i,[I.Ft.S3_PUT_OBJECT_LEGAL_HOLD])||""!==x,icon:(0,L.jsx)(T.fNL,{}),tooltip:"Change Legal Hold rules for this File"},{action:function(){k(!0)},label:"Retention",disabled:!h||!!Q.is_delete_marker||!(0,E.F)(Ae,[I.Ft.S3_GET_OBJECT_RETENTION])||""!==x,icon:(0,L.jsx)(T.E9d,{}),tooltip:"Change Retention rules for this File"},{action:function(){z(!0)},label:"Tags",disabled:!!Q.is_delete_marker||""!==x||!(0,E.F)(Ae,[I.Ft.S3_PUT_OBJECT_TAGGING]),icon:(0,L.jsx)(T.DgT,{}),tooltip:"Change Tags for this File"},{action:function(){V(!0)},label:"Inspect",disabled:!h||!!Q.is_delete_marker||""!==x||!(0,E.F)(Ae,[I.Ft.ADMIN_INSPECT_DATA]),icon:(0,L.jsx)(q.Gp,{}),tooltip:"Inspect this file"},{action:function(){u((0,P.db)({status:!f,objectName:ze}))},label:f?"Hide Object Versions":"Display Object Versions",icon:(0,L.jsx)(T.cRd,{}),disabled:!h||!(Q.version_id&&"null"!==Q.version_id)||!(0,E.F)(Ae,[I.Ft.S3_GET_BUCKET_VERSIONING,I.Ft.S3_PUT_BUCKET_VERSIONING,I.Ft.S3_GET_OBJECT_VERSION]),tooltip:"Display Versions for this file"}];return(0,L.jsxs)(a.Fragment,{children:[C&&Q&&(0,L.jsx)(X.default,{open:C,closeModalAndRefresh:function(){ce(null),S(!1)},bucketName:i,dataObject:re||Q}),_&&Q&&(0,L.jsx)(pe,{open:_,closeModalAndRefresh:function(e){k(!1),e&&u((0,P.vH)(!0))},objectName:Oe,objectInfo:Q,bucketName:i}),xe&&(0,L.jsx)(ge,{deleteOpen:xe,selectedBucket:i,selectedObject:t,closeDeleteModalAndRefresh:function(e){ve(!1),e&&""===x?c(!0):(u((0,P.Eq)(!0)),u((0,P.M3)("")),u((0,P.vH)(!0)))},versioning:h&&s,selectedVersion:x}),U&&Q&&(0,L.jsx)(je,{open:U,closeModalAndRefresh:function(e){G(!1),e&&u((0,P.vH)(!0))},objectName:Q.name,bucketName:i,actualInfo:Q}),Ce&&Q&&(0,L.jsx)(Ze.default,{open:Ce,bucketName:i,object:{name:Q.name,version_id:Q.version_id||"null",size:parseInt(Q.size||"0"),content_type:"",last_modified:new Date(Q.last_modified)},onClosePreview:function(){Se(!1)}}),R&&Q&&(0,L.jsx)(tn,{modalOpen:R,bucketName:i,actualInfo:Q,onCloseAndUpdate:function(e){z(!1),e&&u((0,P.vH)(!0))}}),K&&Q&&(0,L.jsx)(rn,{inspectOpen:K,volumeName:i,inspectPath:Q.name,closeInspectModalAndRefresh:function(e){V(!1),e&&u((0,P.vH)(!0))}}),Pe&&Q&&(0,L.jsx)(un,{open:Pe,closeModal:function(){Le(!1)},currentItem:Oe,bucketName:i,internalPaths:t,actualInfo:Q}),g?(0,L.jsx)(a.Fragment,{children:Re}):(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)(ke,{title:(0,L.jsxs)("div",{className:n.ObjectDetailsTitle,children:[$e(ze,!0),(0,L.jsx)("span",{className:n.objectNameContainer,children:ze})]}),items:Me}),(0,L.jsx)(l.ZP,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,L.jsx)(E.s,{resource:[i,Oe,[i,Q.name].join("/")],scopes:[I.Ft.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,L.jsx)(p.z,{id:"delete-element-click",icon:(0,L.jsx)(T.pJl,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:function(){ve(!0)},disabled:""===x&&Q.is_delete_marker,style:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete".concat(""!==x?" version":"")})})}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.headerForSection,children:[(0,L.jsx)("span",{children:"Object Info"}),(0,L.jsx)(T.Gvh,{})]}),(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Name:"}),(0,L.jsx)("br",{}),(0,L.jsx)("div",{style:{overflowWrap:"break-word"},children:ze})]}),""!==x&&(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Version ID:"}),(0,L.jsx)("br",{}),x]}),(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Size:"}),(0,L.jsx)("br",{}),(0,j.ae)(Q.size||"0")]}),Q.version_id&&"null"!==Q.version_id&&""===x&&(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Versions:"}),(0,L.jsx)("br",{}),ue.length," version",1!==ue.length?"s":"",","," ",(0,j.l5)(Te)]}),""===x&&(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Last Modified:"}),(0,L.jsx)("br",{}),function(e){var n=new Date,t=new Date(e),i=n.getTime()-t.getTime(),a=(0,j.nF)(i,"ms");return""!==a.trim()?"".concat(a," ago"):"Just now"}(Q.last_modified)]}),(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"ETAG:"}),(0,L.jsx)("br",{}),Q.etag||"N/A"]}),(0,L.jsxs)(J.Z,{className:n.detailContainer,children:[(0,L.jsx)("strong",{children:"Tags:"}),(0,L.jsx)("br",{}),0===Be.length?"N/A":Be.map((function(e,n){return(0,L.jsxs)("span",{children:[e,":",v()(Q,"tags.".concat(e),""),n div":{borderBottomColor:"#F8F8F8"}},"@media (max-width: 799px)":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:"#E2E2E2"}}}},versionContainer:{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10},"@media (max-width: 799px)":{fontSize:14,"& svg.min-icon":{display:"none"}}},buttonContainer:{textAlign:"right","& button":{marginLeft:"1.5rem"},"@media (max-width: 600px)":{"& button":{marginLeft:"5px"}}},versionID:{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},versionData:{marginRight:"10px",fontSize:12,color:"#868686","@media (max-width: 799px)":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"}},ctrItem:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:"#F8F8F8",left:"24px"},"@media (max-width: 799px)":{"&::before":{display:"none"}}},collapsableInfo:{"@media (max-width: 799px)":{display:"flex",flexDirection:"column"}},versionItem:{"@media (max-width: 799px)":{display:"none"}}})}))((function(e){var n=e.classes,t=e.fileName,i=e.versionInfo,a=e.isSelected,o=e.checkable,s=e.isChecked,r=e.onCheck,c=e.onShare,d=e.onDownload,u=e.onRestore,h=e.onPreview,m=e.globalClick,f=e.index,p=e.key,x=e.style,v=i.is_delete_marker,b=[{icon:(0,L.jsx)(T.P99,{}),action:h,tooltip:"Preview"},{icon:(0,L.jsx)(T._8t,{}),action:d,tooltip:"Download this version"},{icon:(0,L.jsx)(T.aAc,{}),action:c,tooltip:"Share this version"},{icon:(0,L.jsx)(T.D7Y,{}),action:u,tooltip:"Restore this version"}],g=null;return i.is_delete_marker?g="deleted":i.is_latest?g="current":"null"===i.version_id&&(g="null"),(0,L.jsx)(l.ZP,{container:!0,flex:1,className:n.ctrItem,onClick:function(){m(i)},style:x,children:(0,L.jsx)(l.ZP,{item:!0,xs:12,className:"".concat(n.intermediateLayer," ").concat(a?"selected":""),children:(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.mainFileVersionItem," ").concat(i.is_delete_marker?"deleted":""),children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,justifyContent:"space-between",children:(0,L.jsxs)(l.ZP,{container:!0,children:[(0,L.jsxs)(l.ZP,{item:!0,xs:!0,md:4,className:n.versionContainer,children:[o&&(0,L.jsx)(Sn.Z,{checked:s,id:"select-".concat(i.version_id),label:"",name:"select-".concat(i.version_id),onChange:function(e){e.stopPropagation(),e.preventDefault(),r(i.version_id||"")},value:i.version_id||"",disabled:i.is_delete_marker,overrideCheckboxStyles:{paddingLeft:0,height:34,width:25},noTopMargin:!0}),$e(t,!0)," v",f.toString(),(0,L.jsx)("span",{className:n.versionItem,children:g&&(0,L.jsx)(Cn,{type:g})})]}),(0,L.jsx)(l.ZP,{item:!0,xs:10,md:8,className:n.buttonContainer,children:b.map((function(e,t){return(0,L.jsx)(_.Z,{title:e.tooltip,children:(0,L.jsx)(N.Z,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"".concat(n.spacing," ").concat(v?n.buttonDisabled:""),disabled:v,onClick:function(n){n.stopPropagation(),v?n.preventDefault():e.action(i)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))}))})]})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.versionID,children:"null"!==i.version_id?i.version_id:"-"}),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.collapsableInfo,children:[(0,L.jsxs)("span",{className:n.versionData,children:[(0,L.jsx)("strong",{children:"Last modified:"})," ",(0,L.jsx)(pn(),{children:i.last_modified})]}),(0,L.jsxs)("span",{className:n.versionData,children:[(0,L.jsx)("strong",{children:"Size:"})," ",(0,j.ae)(i.size||"0")]})]})]})})},p)})),Nn=t(90673),_n=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=(0,d.TL)(),r=(0,a.useState)(!1),c=(0,m.Z)(r,2),u=c[0],h=c[1],f=(0,a.useState)(""),p=(0,m.Z)(f,2),x=p[0],v=p[1];if((0,a.useEffect)((function(){u&&b.Z.invoke("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o,"&non_current_versions=true")).then((function(){n(!0)})).catch((function(e){s((0,F.Ih)(e)),h(!1)}))}),[u,n,s,o,i]),!o)return null;return(0,L.jsx)(ve.Z,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:t,titleIcon:(0,L.jsx)(T.NvT,{}),isLoading:u,onConfirm:function(){h(!0)},onClose:function(){return n(!1)},confirmButtonProps:{disabled:"YES, PROCEED"!==x||u},confirmationContent:(0,L.jsxs)(xe.Z,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,L.jsx)("b",{children:(0,j.IO)(o)}),"? ",(0,L.jsx)("br",{}),(0,L.jsx)("br",{}),"To continue please type ",(0,L.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,L.jsx)(l.ZP,{item:!0,xs:12,children:(0,L.jsx)(Qe.Z,{id:"type-confirm",name:"retype-tenant",onChange:function(e){v(e.target.value)},label:"",value:x})})]})})},Tn=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedVersions,s=e.selectedObject,r=(0,d.TL)(),c=(0,a.useState)(!1),l=(0,m.Z)(c,2),u=l[0],h=l[1];return(0,a.useEffect)((function(){if(u){var e=o.map((function(e){return{path:s,versionID:e,recursive:!1}}));e.length>0&&b.Z.invoke("POST","/api/v1/buckets/".concat(i,"/delete-objects?all_versions=false"),e).then((function(){h(!1),n(!0)})).catch((function(e){r((0,F.Ih)(e)),h(!1)}))}}),[u,n,i,s,o,r]),o?(0,L.jsx)(ve.Z,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:t,titleIcon:(0,L.jsx)(T.NvT,{}),isLoading:u,onConfirm:function(){h(!0)},onClose:function(){return n(!1)},confirmationContent:(0,L.jsxs)(xe.Z,{children:["Are you sure you want to delete the selected ",o.length," ","versions for ",(0,L.jsx)("strong",{children:s}),"?"]})}):null},En=t(5171),In={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},kn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({versionsContainer:{padding:10,"@media (max-width: 799px)":{minHeight:800}},noBottomBorder:{borderBottom:0},versionsVirtualPanel:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto","@media (max-width: 799px)":{height:600}},screenTitleContainer:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",backgroundColor:"#F8F8F8",left:"24px",height:"40px",bottom:0},"@media (max-width: 799px)":{"&::before":{display:"none"}}},sortByLabel:{color:"#838383",fontWeight:"bold",whiteSpace:"nowrap",marginRight:12,fontSize:14,"@media (max-width: 600px)":{display:"none"}}},u.bp),u.Si),u.OR),u.VX),u.bK),u.VI),u.cx),u.C4),(0,u.Bz)(e.spacing(4))))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=(0,d.TL)(),r=(0,o.v9)((function(e){return e.objectBrowser.searchVersions})),c=(0,o.v9)((function(e){return e.objectBrowser.loadingVersions})),u=(0,o.v9)((function(e){return e.objectBrowser.selectedVersion})),f=(0,o.v9)(F.N5),x=(0,a.useState)(!1),g=(0,m.Z)(x,2),Z=g[0],w=g[1],C=(0,a.useState)(null),S=(0,m.Z)(C,2),y=S[0],N=S[1],_=(0,a.useState)(null),E=(0,m.Z)(_,2),I=E[0],k=E[1],O=(0,a.useState)([]),z=(0,m.Z)(O,2),A=z[0],M=z[1],U=(0,a.useState)(!1),G=(0,m.Z)(U,2),H=G[0],K=G[1],V=(0,a.useState)(""),Y=(0,m.Z)(V,2),J=Y[0],q=Y[1],$=(0,a.useState)("date"),Q=(0,m.Z)($,2),ee=Q[0],ne=Q[1],te=(0,a.useState)(!1),ie=(0,m.Z)(te,2),ae=ie[0],oe=ie[1],se=(0,a.useState)(!1),re=(0,m.Z)(se,2),ce=re[0],le=re[1],de=(0,a.useState)(!1),ue=(0,m.Z)(de,2),he=ue[0],me=ue[1],fe=(0,a.useState)([]),pe=(0,m.Z)(fe,2),xe=pe[0],ve=pe[1],be=(0,a.useState)(!1),ge=(0,m.Z)(be,2),je=ge[0],we=ge[1],Ce=[];y&&(Ce=y.name.split("/")),(0,a.useEffect)((function(){c||y||s((0,P.Eq)(!0))}),[c,y,s]),(0,a.useEffect)((function(){c&&""!==t&&b.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(f?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]),i=(0,j.IO)(t),a=n.filter((function(e){return e.name===i}));f?(N(a.find((function(e){return e.is_latest}))||In),M(a)):(N(a[0]),M([])),s((0,P.Eq)(!1))})).catch((function(e){s((0,F.Ih)(e)),s((0,P.Eq)(!1))}))}),[c,i,t,s,f]);var Se=function(e){k(e),w(!0)},ye=function(e){k(e),oe(!0)},Ne=function(e){q(e.version_id||""),K(!0)},_e=function(e){!function(e){var n=(0,j.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),a=(0,ln.YO)(8),o=(0,B.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,a,(function(e){s((0,P.RO)({instanceID:n,progress:e}))}),(function(){s((0,P.oK)(n))}),(function(e){s((0,P.qJ)({instanceID:n,msg:e}))}),(function(){s((0,P.Im)(n))}));(0,ln.EN)(a,o),s((0,P.Mc)({ID:a,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)},Te=function(e){s((0,P.M3)(e.version_id||""))},Ee=A.filter((function(e){return!!e.version_id&&e.version_id.includes(r)})),Ie=A.reduce((function(e,n){return n.size?e+parseInt(n.size):e}),0);Ee.sort((function(e,n){if("size"===ee)return e.size&&n.size?e.sizen.size?1:0:0;var t=new Date(e.last_modified).getTime(),i=new Date(n.last_modified).getTime();return ti?-1:0}));var ke=function(e){if(xe.includes(e)){var n=xe.filter((function(n){return n!==e}));ve(n)}else{var t=(0,h.Z)(xe);t.push(e),ve(t)}};return(0,L.jsxs)(a.Fragment,{children:[Z&&y&&(0,L.jsx)(X.default,{open:Z,closeModalAndRefresh:function(){k(null),w(!1),oe(!1)},bucketName:i,dataObject:I||y}),H&&y&&(0,L.jsx)(wn,{restoreOpen:H,bucketName:i,versionID:J,objectPath:y.name,onCloseAndUpdate:function(e){K(!1),q(""),e&&(s((0,P.Eq)(!0)),s((0,P.vH)(!0)))}}),ae&&y&&(0,L.jsx)(Ze.default,{open:ae,bucketName:i,object:{name:y.name,version_id:I&&I.version_id?I.version_id:"null",size:parseInt(I&&I.size?I.size:"0"),content_type:"",last_modified:new Date(y.last_modified)},onClosePreview:function(){oe(!1)}}),ce&&(0,L.jsx)(_n,{deleteOpen:ce,closeDeleteModalAndRefresh:function(e){le(!1),e&&(s((0,P.Eq)(!0)),s((0,P.M3)("")),s((0,P.vH)(!0)))},selectedBucket:i,selectedObject:t}),je&&(0,L.jsx)(Tn,{selectedBucket:i,selectedObject:(0,j.IO)(t),deleteOpen:je,selectedVersions:xe,closeDeleteModalAndRefresh:function(e){we(!1),e&&(s((0,P.Eq)(!0)),s((0,P.M3)("")),s((0,P.vH)(!0)),ve([]))}}),(0,L.jsxs)(l.ZP,{container:!0,className:n.versionsContainer,children:[!y&&(0,L.jsx)(l.ZP,{item:!0,xs:12,children:(0,L.jsx)(jn.Z,{})}),y&&(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,children:(0,L.jsx)(D,{bucketName:i,internalPaths:(0,j.IO)(t),existingFiles:[],hidePathButton:!0})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,L.jsx)(R.Z,{icon:(0,L.jsx)("span",{className:n.listIcon,children:(0,L.jsx)(T.cRd,{})}),title:(0,L.jsxs)("span",{className:n.titleSpacer,children:[Ce.length>0?Ce[Ce.length-1]:y.name," ","Versions"]}),subTitle:(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,L.jsx)("span",{className:n.detailsSpacer,children:(0,L.jsxs)("strong",{children:[A.length," Version",1===A.length?"":"s","\xa0\xa0\xa0"]})}),(0,L.jsx)("span",{className:n.detailsSpacer,children:(0,L.jsx)("strong",{children:(0,j.l5)(Ie)})})]})}),actions:(0,L.jsxs)(a.Fragment,{children:[(0,L.jsx)(W.Z,{tooltip:"Select Multiple Versions",children:(0,L.jsx)(p.z,{id:"select-multiple-versions",onClick:function(){me(!he)},icon:(0,L.jsx)(T.amE,{}),variant:he?"callAction":"regular",style:{marginRight:8}})}),he&&(0,L.jsx)(W.Z,{tooltip:"Delete Selected Versions",children:(0,L.jsx)(p.z,{id:"delete-multiple-versions",onClick:function(){we(!0)},icon:(0,L.jsx)(T.pJl,{}),variant:"secondary",style:{marginRight:8},disabled:0===xe.length})}),(0,L.jsx)(W.Z,{tooltip:"Delete Non Current Versions",children:(0,L.jsx)(p.z,{id:"delete-non-current",onClick:function(){le(!0)},icon:(0,L.jsx)(T.utM,{}),variant:"secondary",style:{marginRight:15},disabled:A.length<=1})}),(0,L.jsx)("span",{className:n.sortByLabel,children:"Sort by"}),(0,L.jsx)(Nn.Z,{id:"sort-by",label:"",value:ee,onChange:function(e){ne(e.target.value)},name:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}]})]}),className:n.noBottomBorder})}),(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.versionsVirtualPanel,children:y.version_id&&"null"!==y.version_id&&(0,L.jsx)(En.aV,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:Ee.length,rowHeight:108,rowRenderer:function(e){var n=e.key,t=e.index,i=(e.isScrolling,e.isVisible,e.style),a=A.length-t;return(0,L.jsx)(yn,{style:i,fileName:(null===y||void 0===y?void 0:y.name)||"",versionInfo:Ee[t],index:a,onDownload:_e,onRestore:Ne,onShare:Se,onPreview:ye,globalClick:Te,isSelected:u===Ee[t].version_id,checkable:he,onCheck:ke,isChecked:xe.includes(Ee[t].version_id||"")},n)}})})]})]})]})})),Fn=t(9859),Pn=t(46078),Ln=a.lazy((function(){return Promise.resolve().then(t.bind(t,13065))})),On=a.lazy((function(){return Promise.resolve().then(t.bind(t,28789))})),Dn=a.lazy((function(){return Promise.resolve().then(t.bind(t,74768))})),Bn=(0,k.Z)(a.lazy((function(){return t.e(711).then(t.bind(t,50711))}))),Rn=(0,k.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,34433))}))),zn=(0,k.Z)(a.lazy((function(){return Promise.all([t.e(3691),t.e(2515),t.e(6901)]).then(t.bind(t,26901))}))),An=(0,k.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,78562))}))),Mn=(0,K.Z)((function(e){return(0,r.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({browsePaper:{border:0,height:"calc(100vh - 210px)","&.isEmbedded":{height:"calc(100vh - 315px)"},"&.actionsPanelOpen":{minHeight:"100%"},"@media (max-width: 800px)":{width:800}},"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}},badgeOverlap:{"& .MuiBadge-badge":{top:10,right:1,width:5,height:5,minWidth:5}},screenTitle:{borderBottom:0,paddingTop:0,paddingLeft:0,paddingRight:0}},u.VX),u.OR),u.qg),{},{searchField:(0,i.Z)((0,i.Z)({},u.qg.searchField),{},{maxWidth:380}),screenTitleContainer:{border:"#EAEDEE 1px solid",padding:"0.8rem 15px 0"},labelStyle:{color:"#969FA8",fontSize:"12px"},breadcrumbsContainer:{padding:"12px 14px 5px"},parentWrapper:{"@media (max-width: 800px)":{overflowX:"auto"}},fullContainer:{"@media (max-width: 799px)":{width:0}},hideListOnSmall:{"@media (max-width: 799px)":{display:"none"}}},u.C4),u.cx),(0,u.Bz)(e.spacing(4))))})),Un={borderWidth:2,borderRadius:2,borderColor:"#eeeeee",outline:"none"},Gn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#2196f3"},Wn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#00e676"};var Hn=(0,L.jsx)(Z.Z,{component:"h3",children:"Loading..."}),Kn=function(){var e,n=Mn(),t=(0,d.TL)(),r=(0,s.UO)(),c=(0,s.s0)(),u=(0,s.TH)(),x=(0,o.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),C=(0,o.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),S=(0,o.v9)((function(e){return e.objectBrowser.rewind.bucketToRewind})),y=(0,o.v9)((function(e){return e.objectBrowser.versionsMode})),N=(0,o.v9)((function(e){return e.objectBrowser.searchObjects})),_=(0,o.v9)((function(e){return e.objectBrowser.showDeleted})),k=(0,o.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),O=(0,o.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),A=(0,o.v9)((function(e){return e.objectBrowser.loadingObjects})),M=(0,o.v9)((function(e){return e.objectBrowser.simplePath})),U=(0,o.v9)(Fn.HQ),G=(0,o.v9)(Fn.G6),K=(0,o.v9)((function(e){return e.console.session.allowResources})),V=(0,o.v9)(Pn.$4),J=!(null===V||void 0===V||!V.includes("object-browser-only")),q=(0,a.useState)([]),X=(0,m.Z)(q,2),$=X[0],Q=X[1],ee=(0,a.useState)(!1),ne=(0,m.Z)(ee,2),te=ne[0],ie=ne[1],ae=(0,a.useState)(0),oe=(0,m.Z)(ae,2),se=oe[0],re=oe[1],ce=(0,a.useState)(Hn),le=(0,m.Z)(ce,2),de=le[0],ue=le[1],he=(0,a.useState)(!0),me=(0,m.Z)(he,2),fe=me[0],pe=me[1],xe=(0,a.useState)(!1),ve=(0,m.Z)(xe,2),be=ve[0],ge=ve[1],je=(0,a.useState)(!0),Ze=(0,m.Z)(je,2),we=Ze[0],Ce=Ze[1],Se=(0,a.useState)(!1),ye=(0,m.Z)(Se,2),Ne=ye[0],_e=ye[1],Te=(0,a.useState)(!1),Ee=(0,m.Z)(Te,2),Ie=Ee[0],Fe=Ee[1],Pe=(0,a.useState)([]),Le=(0,m.Z)(Pe,2),Oe=Le[0],De=Le[1],Be=(0,a.useState)(!1),Re=(0,m.Z)(Be,2),ze=Re[0],Ae=Re[1],Me=(0,a.useState)(null),Ue=(0,m.Z)(Me,2),Ge=Ue[0],We=Ue[1],He=(0,a.useState)(!1),Ke=(0,m.Z)(He,2),Ve=Ke[0],Ye=Ke[1],Je=(0,a.useState)("ASC"),qe=(0,m.Z)(Je,2),Xe=qe[0],$e=qe[1],Qe=(0,a.useState)("name"),en=(0,m.Z)(Qe,2),nn=en[0],tn=en[1],an=(0,a.useState)(!1),on=(0,m.Z)(an,2),sn=on[0],rn=on[1],cn=(0,a.useState)(!1),dn=(0,m.Z)(cn,2),hn=dn[0],fn=dn[1],pn=(0,a.useState)(!1),xn=(0,m.Z)(pn,2),vn=xn[0],jn=xn[1],Zn=(0,a.useState)(null),wn=(0,m.Z)(Zn,2),Cn=wn[0],yn=wn[1],Nn=(0,a.useState)(null),_n=(0,m.Z)(Nn,2),Tn=_n[0],En=_n[1],In=u.pathname.split("/browse/"),Kn=2===In.length?In[1]:"",Vn=r.bucketName||"",Yn=(0,a.useRef)(null),Jn=(0,a.useRef)(null);(0,a.useEffect)((function(){null!==Jn.current&&(Jn.current.setAttribute("directory",""),Jn.current.setAttribute("webkitdirectory",""))}),[Jn]),(0,a.useEffect)((function(){if(1===Oe.length){var e=Oe[0];"none"!==(0,B.Bg)(e)?jn(!0):jn(!1),e.endsWith("/")?fn(!1):fn(!0)}else fn(!1),jn(!1)}),[Oe]),(0,a.useEffect)((function(){Cn||b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/quota")).then((function(e){var n=null;e.quota&&(n=e),yn(n)})).catch((function(e){console.error("Error Getting Quota Status: ",e.detailedError),yn(null)}))}),[Cn,Vn]),(0,a.useEffect)((function(){Oe.length>0?t((0,P.vb)(!0)):0===Oe.length&&null===O&&t((0,P.vb)(!1))}),[Oe,O,t]);var qn=(0,E.F)(Vn,[I.Ft.S3_DELETE_OBJECT]),Xn=(0,E.F)(Vn,[I.Ft.S3_LIST_BUCKET]);(0,a.useEffect)((function(){sn||(t((0,Fn.d5)(!0)),rn(!0))}),[sn,t,rn]),function(e,n){var t=(0,a.useRef)(null);(0,a.useEffect)((function(){t.current=e}),[e]),(0,a.useEffect)((function(){if(null!==n){var e=setInterval((function(){void 0!==t&&t.current&&t.current()}),n);return function(){return clearInterval(e)}}}),[n])}((function(){A&&function(){var e=Date.now()-se;e/1e3>=6?ue((0,L.jsx)(a.Fragment,{children:(0,L.jsxs)(Z.Z,{component:"h3",children:["This operation is taking longer than expected... (",Math.ceil(e/1e3),"s)"]})})):e/1e3>=3&&ue((0,L.jsx)(Z.Z,{component:"h3",children:"This operation is taking longer than expected..."}))}()}),1e3),(0,a.useEffect)((function(){fe&&(Xn?b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/versioning")).then((function(e){ge(e.is_versioned),pe(!1)})).catch((function(e){console.error("Error Getting Object Versioning Status: ",e.detailedError),pe(!1)})):(pe(!1),Q([])))}),[Vn,fe,t,Xn]),(0,a.useEffect)((function(){we&&(Xn?b.Z.invoke("GET","/api/v1/buckets/".concat(Vn,"/object-locking")).then((function(e){_e(e.object_locking_enabled),Ce(!1)})).catch((function(e){console.error("Error Getting Object Locking Status: ",e.detailedError),Ce(!1)})):(Q([]),Ce(!1)))}),[Vn,we,t,Xn]),(0,a.useEffect)((function(){var e=(0,j.IO)(Kn);e.endsWith("/")||""===e?(t((0,P.vb)(!1)),t((0,P.EE)(null)),t((0,P.Su)(""===e?"/":e))):(t((0,P.vH)(!0)),t((0,P.vb)(!0)),t((0,P.Eq)(!0)),t((0,P.EE)("".concat(e?"".concat((0,j.LL)(e)):""))),t((0,P.Su)("".concat(e.split("/").slice(0,-1).join("/"),"/"))))}),[Kn,C,x,t]),(0,a.useEffect)((function(){t((0,P.G4)("")),t((0,P.MU)(!0)),De([])}),[M,t,De]),(0,a.useEffect)((function(){if(A)if(Xn){var e="";if(Kn){var n=(0,j.IO)(Kn);e=n.endsWith("/")?n:n+"/"}var i=Date.now();re(i),ue(Hn);var a="/api/v1/buckets/".concat(Vn,"/objects");if(x){if(S!==Vn)return void t((0,P._w)());if(C){var o=C.toISOString();a="/api/v1/buckets/".concat(Vn,"/rewind/").concat(o)}}else if(_){var s=(new Date).toISOString();a="/api/v1/buckets/".concat(Vn,"/rewind/").concat(s)}b.Z.invoke("GET","".concat(a).concat(e?"?prefix=".concat((0,j.LL)(e)):"")).then((function(n){var i=n.objects||[],o=[],s=[];i.forEach((function(e){e.name!==(0,j.IO)(Kn)&&(e.name.endsWith("/")?o.push(e):s.push(e))}));var r=[].concat(o,s);if(0===r.length&&""!==e){var c="/api/v1/buckets/".concat(Vn,"/objects").concat(Kn?"?prefix=".concat(Kn):"");if(x){var l=C.toISOString(),d="";if(Kn){var u=(0,j.IO)(Kn);d=u.endsWith("/")?u:u+"/"}c="/api/v1/buckets/".concat(Vn,"/rewind/").concat(l).concat(d?"?prefix=".concat((0,j.LL)(d)):"")}b.Z.invoke("GET",c).then((function(n){if(n.objects){for(var i=!1,o=e.slice(0,e.length-1),s=0;s1,C="An error occurred while uploading the file".concat(w?"s":"","."),S={413:"Error - File size too large"};Z.withCredentials=!1,Z.onload=function(e){if(Z.status>=200&&Z.status<300)t((0,P.oK)(g)),s({status:Z.status}),(0,ln.GM)(p);else{if(S[Z.status])C=S[Z.status];else if(Z.response)try{var n=JSON.parse(Z.response);C=n.detailedMessage}catch(i){C="something went wrong"}t((0,P.qJ)({instanceID:g,msg:C})),r({status:Z.status,message:C}),(0,ln.GM)(p)}},Z.upload.addEventListener("error",(function(e){r(C),t((0,P.qJ)({instanceID:g,msg:"A network error occurred."}))})),Z.upload.addEventListener("progress",(function(e){var n=Math.floor(100*e.loaded/e.total);t((0,P.RO)({instanceID:g,progress:n}))})),Z.onerror=function(){r(C),t((0,P.qJ)({instanceID:g,msg:"A network error occurred."}))},Z.onloadend=function(){0===e.length&&t((0,P.MU)(!0))},Z.onabort=function(){t((0,P.Im)(g))};var y=new FormData;void 0!==o.size&&(y.append(o.size.toString(),d,l),(0,ln.EN)(p,Z),t((0,P.Mc)({ID:p,bucketName:n,done:!1,instanceID:g,percentage:0,prefix:"".concat((0,j.IO)(u)).concat(l),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,ln.N5)(p,y),(0,ln.EN)(p,Z))}))},s=[];t((0,P.LD)());for(var r=0;r0){var i=s.length,a=s.length-n.length,o={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(a,"/").concat(i)};t((0,F.Ih)(o))}t((0,P.MU)(!0)),De([])}))}(e,Vn,i,n)}),[Vn,t,M]),et=(0,a.useCallback)((function(e){if(e&&e.length>0){var n=e[0].path;Qn(e,n)}}),[Qn]),nt=(0,f.uI)({noClick:!0,onDrop:et}),tt=nt.getRootProps,it=nt.getInputProps,at=nt.isDragActive,ot=nt.isDragAccept,st=(0,a.useMemo)((function(){return(0,i.Z)((0,i.Z)((0,i.Z)({},Un),at?Gn:{}),ot?Wn:{})}),[at,ot]),rt=$.filter((function(e){return""===N||e.name.toLowerCase().indexOf(N.toLowerCase())>=0})),ct=(0,j.IO)(Kn),lt=ct.split("/").filter((function(e){return""!==e})),dt=rt.sort((0,B.P_)(nn)),ut=[];ut="ASC"===Xe?dt:dt.reverse();var ht=[Vn];lt.length>0&&(ht=ht.concat(lt));var mt=function(e){if(t((0,P.EE)(null)),t((0,P.db)({status:!1})),k&&null!==O){var n=(0,j.IO)(Kn).split("/");n.pop();var i="";n&&n.length>0&&(i="".concat(n.join("/"),"/")),c("/buckets/".concat(Vn,"/browse/").concat((0,j.LL)(i)))}t((0,P.vb)(!1)),De([]),e&&t((0,P.MU)(!0))},ft=[{type:"view",label:"View",onClick:function(e){De([]);var n="/buckets/".concat(Vn,"/browse").concat(e?"/".concat((0,j.LL)(e)):"");c(n),t((0,P.vb)(!0)),t((0,P.Eq)(!0)),t((0,P.EE)("".concat(e?"".concat((0,j.LL)(e)):"")))},sendOnlyId:!0}],pt=[{action:function(){if(0!==Oe.length){var e=[];if(1===(e=rt.filter((function(e){return Oe.includes(e.name)}))).length&&e[0].name.length>200&&(0,j.mv)().toLowerCase().includes("win"))return void En(e[0]);e.forEach((function(e){!function(e){var n=(0,j.LL)("".concat(Vn,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ln.YO)(8),a=(0,B.LR)(Vn,(0,j.LL)(e.name),e.version_id,e.size,null,i,(function(e){t((0,P.RO)({instanceID:n,progress:e}))}),(function(){t((0,P.oK)(n))}),(function(e){t((0,P.qJ)({instanceID:n,msg:e}))}),(function(){t((0,P.Im)(n))}));(0,ln.EN)(i,a),t((0,P.Mc)({ID:i,bucketName:Vn,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)}))}},label:"Download",disabled:0===Oe.length,icon:(0,L.jsx)(T._8t,{}),tooltip:"Download Selected"},{action:function(){if(1===Oe.length){var e;(e=rt.find((function(e){return Oe.includes(e.name)})))&&(We(e),Ye(!0))}},label:"Share",disabled:1!==Oe.length||!hn,icon:(0,L.jsx)(T.aAc,{}),tooltip:"Share Selected File"},{action:function(){if(1===Oe.length){var e;(e=rt.find((function(e){return Oe.includes(e.name)})))&&(We(e),Ae(!0))}},label:"Preview",disabled:1!==Oe.length||!vn,icon:(0,L.jsx)(T.P99,{}),tooltip:"Preview Selected File"},{action:function(){ie(!0)},label:"Delete",icon:(0,L.jsx)(Dn,{}),disabled:!(0,E.F)(Vn,[I.Ft.S3_DELETE_OBJECT])||0===Oe.length||!qn,tooltip:"Delete Selected Files"}];return(0,L.jsxs)(a.Fragment,{children:[Ve&&Ge&&(0,L.jsx)(Rn,{open:Ve,closeModalAndRefresh:function(){Ye(!1),We(null)},bucketName:Vn,dataObject:{name:Ge.name,last_modified:"",version_id:Ge.version_id}}),te&&(0,L.jsx)(Bn,{deleteOpen:te,selectedBucket:Vn,selectedObjects:Oe,closeDeleteModalAndRefresh:function(e){ie(!1),e&&(t((0,F.y1)("Objects deleted successfully.")),De([]),t((0,P.MU)(!0)))},versioning:be}),Ie&&(0,L.jsx)(zn,{open:Ie,closeModalAndRefresh:function(){Fe(!1)},bucketName:Vn}),ze&&(0,L.jsx)(An,{open:ze,bucketName:Vn,object:Ge,onClosePreview:function(){Ae(!1),We(null)}}),!!Tn&&(0,L.jsx)(un,{open:!!Tn,closeModal:function(){En(null)},currentItem:(null===(e=Tn.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:Vn,internalPaths:Kn,actualInfo:{name:Tn.name,last_modified:"",version_id:Tn.version_id,size:Tn.size.toString()}}),(0,L.jsxs)(z.Z,{variant:"full",children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,L.jsx)(R.Z,{className:n.screenTitle,icon:(0,L.jsx)("span",{className:n.listIcon,children:(0,L.jsx)(T.wNb,{})}),title:(0,L.jsx)("span",{className:n.titleSpacer,children:Vn}),subTitle:(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,L.jsxs)("span",{className:n.detailsSpacer,children:["Created:\xa0\xa0\xa0",(0,L.jsx)("strong",{children:(null===G||void 0===G?void 0:G.creation_date)||""})]}),(0,L.jsxs)("span",{className:n.detailsSpacer,children:["Access:\xa0\xa0\xa0",(0,L.jsx)("strong",{children:(null===G||void 0===G?void 0:G.access)||""})]}),G&&(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)("span",{className:n.detailsSpacer,children:[G.size&&(0,L.jsx)(a.Fragment,{children:(0,j.l5)(G.size)}),G.size&&Cn&&(0,L.jsxs)(a.Fragment,{children:[" / ",(0,j.l5)(Cn.quota)]}),G.size&&G.objects?" - ":"",G.objects&&(0,L.jsxs)(a.Fragment,{children:[G.objects,"\xa0Object",G.objects&&1!==G.objects?"s":""]})]})})]})}),actions:(0,L.jsx)(a.Fragment,{children:(0,L.jsxs)("div",{className:n.actionsSection,children:[(0,L.jsx)(W.Z,{tooltip:"Rewind Bucket",children:(0,L.jsx)(p.z,{id:"rewind-objects-list",label:"Rewind",icon:(0,L.jsx)(w.Z,{badgeContent:" ",color:"secondary",variant:"dot",invisible:!x,className:n.badgeOverlap,sx:{height:16},children:(0,L.jsx)(Ln,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:function(){Fe(!0)},disabled:!be||!(0,E.F)(Vn,[I.Ft.S3_GET_OBJECT])})}),(0,L.jsx)(W.Z,{tooltip:"Reload List",children:(0,L.jsx)(p.z,{id:"refresh-objects-list",label:"Refresh",icon:(0,L.jsx)(On,{}),variant:"regular",onClick:function(){t(y?(0,P.Eq)(!0):(0,P.MU)(!0))},disabled:!(0,E.F)(Vn,[I.Ft.S3_LIST_BUCKET])||x})}),(0,L.jsx)("input",{type:"file",multiple:!0,onChange:$n,style:{display:"none"},ref:Yn}),(0,L.jsx)("input",{type:"file",multiple:!0,onChange:$n,style:{display:"none"},ref:Jn}),(0,L.jsx)(H,{bucketName:Vn,uploadPath:ht.join("/"),uploadFileFunction:function(e){Yn&&Yn.current&&Yn.current.click(),e()},uploadFolderFunction:function(e){Jn&&Jn.current&&Jn.current.click(),e()}})]})})})}),(0,L.jsxs)("div",(0,i.Z)((0,i.Z)({id:"object-list-wrapper"},tt({style:(0,i.Z)({},st)})),{},{children:[(0,L.jsx)("input",(0,i.Z)({},it())),(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.tableBlock,sx:{border:"#EAEDEE 1px solid",borderTop:0},children:[y?(0,L.jsx)(a.Fragment,{children:null!==O&&(0,L.jsx)(kn,{internalPaths:O,bucketName:Vn})}):(0,L.jsx)(E.s,{scopes:[I.Ft.S3_LIST_BUCKET],resource:Vn,errorProps:{disabled:!0},children:(0,L.jsxs)(l.ZP,{item:!0,xs:12,className:n.fullContainer,children:[(0,L.jsx)(l.ZP,{item:!0,xs:12,className:n.breadcrumbsContainer,children:(0,L.jsx)(D,{bucketName:Vn,internalPaths:ct,existingFiles:$||[],additionalOptions:!be||x?null:(0,L.jsx)("div",{children:(0,L.jsx)(Sn.Z,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:function(){t((0,P.mz)(!_)),mt(!0)},checked:_,overrideLabelClasses:n.labelStyle,className:n.overrideShowDeleted,noTopMargin:!0})}),hidePathButton:!1})}),(0,L.jsx)(g.Z,{itemActions:ft,columns:x?gn:bn,isLoading:A,loadingMessage:de,entityName:"Objects",idField:"name",records:ut,customPaperHeight:"".concat(n.browsePaper," ").concat(J?"isEmbedded":""," ").concat(k?"actionsPanelOpen":""),selectedItems:Oe,onSelect:function(e){var n=e.target,i=n.value,a=n.checked,o=(0,h.Z)(Oe);return a?o.push(i):o=o.filter((function(e){return e!==i})),De(o),t((0,P.EE)(null)),o},customEmptyMessage:"This location is empty".concat(x?"":", please try uploading a new file"),sortConfig:{currentSort:nn,currentDirection:Xe,triggerSort:function(e){var n=v()(e,"sortDirection","DESC");tn(e.sortBy),$e(n),t((0,P.MU)(!0))}},onSelectAll:function(){if(t((0,P.EE)(null)),Oe.length!==ut.length){var e=ut.map((function(e){return e.name}));De(e)}else De([])},rowStyle:function(e){var n,t=e.index;return null!==(n=ut[t])&&void 0!==n&&n.delete_flag?"deleted":""},parentClassName:n.parentWrapper})]})}),(0,L.jsx)(E.s,{scopes:[I.Ft.S3_LIST_BUCKET],resource:Vn,errorProps:{disabled:!0},children:(0,L.jsxs)(Y,{open:k,closePanel:function(){mt(!1)},className:"".concat(y?n.hideListOnSmall:""),children:[Oe.length>0&&(0,L.jsx)(ke,{items:pt,title:"Selected Objects:"}),null!==O&&(0,L.jsx)(mn,{internalPaths:O,bucketName:Vn,onClosePanel:mt,versioning:be,locking:Ne})]})})]})]}))]})]})},Vn=t(32291),Yn=t(95792),Jn=t(84669),qn=t(59114),Xn=t(73996),$n=t(49535),Qn=(0,c.Z)((function(e){return(0,r.Z)((0,i.Z)({},(0,u.Bz)(e.spacing(4))))}))((function(){var e=(0,d.TL)(),n=(0,s.s0)(),t=(0,s.UO)(),i=(0,s.TH)(),r=(0,o.v9)((function(e){return e.objectBrowser.versionsMode})),c=(0,o.v9)((function(e){return e.objectBrowser.searchObjects})),u=(0,o.v9)((function(e){return e.objectBrowser.versionedFile})),h=(0,o.v9)((function(e){return e.objectBrowser.searchVersions})),m=(0,o.v9)(Pn.$4),f=t.bucketName||"",x=i.pathname.split("/browse/"),v=2===x.length?x[1]:"",b=!(null===m||void 0===m||!m.includes("object-browser-only"));(0,a.useEffect)((function(){e((0,P.db)({status:!1}))}),[v,e]);var g=(0,$n.Z)(f,[I.Ft.S3_GET_BUCKET_POLICY,I.Ft.S3_PUT_BUCKET_POLICY,I.Ft.S3_GET_BUCKET_VERSIONING,I.Ft.S3_PUT_BUCKET_VERSIONING,I.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,I.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,I.Ft.S3_DELETE_BUCKET,I.Ft.S3_GET_BUCKET_NOTIFICATIONS,I.Ft.S3_PUT_BUCKET_NOTIFICATIONS,I.Ft.S3_GET_REPLICATION_CONFIGURATION,I.Ft.S3_PUT_REPLICATION_CONFIGURATION,I.Ft.S3_GET_LIFECYCLE_CONFIGURATION,I.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,I.Ft.ADMIN_GET_BUCKET_QUOTA,I.Ft.ADMIN_SET_BUCKET_QUOTA,I.Ft.S3_PUT_BUCKET_TAGGING,I.Ft.S3_GET_BUCKET_TAGGING,I.Ft.S3_LIST_BUCKET_VERSIONS,I.Ft.S3_GET_BUCKET_POLICY_STATUS,I.Ft.S3_DELETE_BUCKET_POLICY]),j=(0,L.jsx)(a.Fragment,{children:r?(0,L.jsx)(a.Fragment,{children:(0,L.jsx)(qn.Z,{placeholder:"Start typing to filter versions of ".concat(u),onChange:function(n){e((0,P.Pr)(n))},value:h})}):(0,L.jsx)(E.s,{scopes:[I.Ft.S3_LIST_BUCKET],resource:f,errorProps:{disabled:!0},children:(0,L.jsx)(qn.Z,{placeholder:"Start typing to filter objects in the bucket",onChange:function(n){e((0,P.G4)(n))},value:c})})});return(0,L.jsxs)(a.Fragment,{children:[b?(0,L.jsxs)(l.ZP,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,L.jsx)(l.ZP,{children:(0,L.jsx)(Xn.Z,{marginRight:30,marginTop:10})}),(0,L.jsx)(l.ZP,{item:!0,xs:!0,children:j})]}):(0,L.jsx)(Vn.Z,{label:(0,L.jsx)(Jn.Z,{label:"Buckets",to:I.gA.BUCKETS}),actions:(0,L.jsx)(E.s,{scopes:I.D[I.EI.BUCKET_ADMIN],resource:f,errorProps:{disabled:!0},children:(0,L.jsx)(W.Z,{tooltip:g?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+I.EI.BUCKET_ADMIN+" permisions.",children:(0,L.jsx)(p.z,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:function(){n("/buckets/".concat(f,"/admin"))},icon:(0,L.jsx)(Yn.Z,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),middleComponent:j}),(0,L.jsx)(l.ZP,{children:(0,L.jsx)(Kn,{})})]})}))},34433:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var i=t(29439),a=t(1413),o=t(72791),s=t(26181),r=t.n(s),c=t(60364),l=t(75952),d=t(11135),u=t(25787),h=t(78029),m=t.n(h),f=t(61889),p=t(40986),x=t(23814),v=t(81207),b=t(56028),g=t(64163),j=t(30829),Z=t(72426),w=t.n(Z),C=t(21435),S=t(38734),y=t(80184),N=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},x.YI),x.Hr),{},{labelContainer:{display:"flex",alignItems:"center",marginBottom:15},fieldContainer:(0,a.Z)((0,a.Z)({},x.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),dateInputContainer:{margin:"0 10px"},durationInputs:{display:"flex",alignItems:"center",justifyContent:"flex-start"},validityIndicator:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10},invalidDurationText:{marginTop:15,display:"flex",color:"red",fontSize:11},reverseInput:{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}},validityText:{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},validTill:{fontWeight:"bold",marginLeft:15}}))}))((function(e){var n=e.classes,t=e.id,a=e.initialDate,s=e.label,r=e.maxDays,c=e.entity,l=e.onChange,d=(0,o.useState)(7),u=(0,i.Z)(d,2),h=u[0],m=u[1],p=(0,o.useState)(0),x=(0,i.Z)(p,2),v=x[0],b=x[1],g=(0,o.useState)(0),Z=(0,i.Z)(g,2),N=Z[0],_=Z[1],T=(0,o.useState)(!0),E=(0,i.Z)(T,2),I=E[0],k=E[1],F=(0,o.useState)(w()()),P=(0,i.Z)(F,2),L=P[0],O=P[1];(0,o.useEffect)((function(){O(function(e,n,t,i){return w()(e).add(n,"days").add(t,"hours").add(i,"minutes")}(a,h,v,N))}),[a,h,v,N]),(0,o.useEffect)((function(){I?l(L.format("YYYY-MM-DDTHH:mm:ss"),!0):l("0000-00-00",!1)}),[L,l,I]),(0,o.useEffect)((function(){var e=!0;(h<0||r&&h>r||isNaN(h))&&(e=!1),(v<0||v>23||isNaN(v))&&(e=!1),(N<0||N>59||isNaN(N))&&(e=!1),!r||h!==r||0===v&&0===N||(e=!1),k(e)}),[L,r,l,h,v,N]);var D={style:{textAlign:"center",paddingRight:10,paddingLeft:10,width:25},className:"removeArrows"};return(0,y.jsx)(o.Fragment,{children:(0,y.jsxs)(f.ZP,{container:!0,className:n.fieldContainer,children:[(0,y.jsx)(f.ZP,{item:!0,xs:12,className:n.labelContainer,children:(0,y.jsx)(j.Z,{htmlFor:t,className:n.inputLabel,sx:{marginLeft:"10px"},children:(0,y.jsx)("span",{children:s})})}),(0,y.jsxs)(f.ZP,{item:!0,xs:12,className:n.durationInputs,children:[(0,y.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,y.jsx)(C.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:r?r.toString():"999",label:"Days",name:t,onChange:function(e){m(parseInt(e.target.value))},value:h.toString(),extraInputProps:D,noLabelMinWidth:!0})}),(0,y.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,y.jsx)(C.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:function(e){b(parseInt(e.target.value))},value:v.toString(),extraInputProps:D,noLabelMinWidth:!0})}),(0,y.jsx)(f.ZP,{item:!0,className:n.dateInputContainer,children:(0,y.jsx)(C.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:function(e){_(parseInt(e.target.value))},value:N.toString(),extraInputProps:D,noLabelMinWidth:!0})})]}),(0,y.jsx)(f.ZP,{item:!0,xs:12,className:"".concat(n.validityIndicator," ").concat(n.formFieldRow),children:I?(0,y.jsxs)("div",{className:n.validityText,children:[(0,y.jsx)(S.xPt,{}),(0,y.jsxs)("div",{className:n.validityLabel,children:[c," will be available until:"]})," ",(0,y.jsx)("div",{className:n.validTill,children:L.format("MM/DD/YYYY HH:mm:ss")})]}):(0,y.jsx)("div",{className:n.invalidDurationText,children:"Please select a valid duration."})})]})})})),_=t(45248),T=t(87995),E=t(25469),I=o.lazy((function(){return Promise.resolve().then(t.bind(t,79880))})),k=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({shareLinkInfo:{fontSize:14,fontWeight:400},copyShareLink:{display:"flex","@media (max-width: 900px)":{flexFlow:"column",alignItems:"center",justifyContent:"center"}},copyShareLinkInput:{"& div:first-child":{marginTop:0},"@media (max-width: 900px)":{minWidth:250}},copyShareLinkBtn:{display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{marginTop:10}}},x.ID),x.DF))}))((function(e){var n=e.classes,t=e.open,a=e.closeModalAndRefresh,s=e.bucketName,d=e.dataObject,u=(0,E.TL)(),h=(0,c.v9)(T.N5),x=(0,o.useState)(""),j=(0,i.Z)(x,2),Z=j[0],w=j[1],C=(0,o.useState)(!0),k=(0,i.Z)(C,2),F=k[0],P=k[1],L=(0,o.useState)(!1),O=(0,i.Z)(L,2),D=O[0],B=O[1],R=(0,o.useState)(""),z=(0,i.Z)(R,2),A=z[0],M=z[1],U=(0,o.useState)(!0),G=(0,i.Z)(U,2),W=G[0],H=G[1],K=(0,o.useState)("null"),V=(0,i.Z)(K,2),Y=V[0],J=V[1],q=new Date;return(0,o.useEffect)((function(){if(void 0===d.version_id)return h?(v.Z.invoke("GET","/api/v1/buckets/".concat(s,"/objects?prefix=").concat((0,_.LL)(d.name)).concat(h?"&with_versions=true":"")).then((function(e){var n=r()(e,"objects",[]).find((function(e){return e.is_latest}));J(n?n.version_id:"null")})).catch((function(e){u((0,T.zb)(e))})),void P(!1)):(J("null"),void P(!1));J(d.version_id||"null"),P(!1)}),[s,d,h,u]),(0,o.useEffect)((function(){if(W&&!F){B(!0),w("");var e=new Date("".concat(A)),n=new Date,t=Math.ceil((e.getTime()-n.getTime())/1e3);t>0&&v.Z.invoke("GET","/api/v1/buckets/".concat(s,"/objects/share?prefix=").concat((0,_.LL)(d.name),"&version_id=").concat(Y).concat(""!==A?"&expires=".concat(t,"s"):"")).then((function(e){w(e),B(!1)})).catch((function(e){u((0,T.zb)(e)),w(""),B(!1)}))}}),[d,A,s,W,w,u,h,F,Y]),(0,y.jsx)(o.Fragment,{children:(0,y.jsxs)(b.Z,{title:"Share File",titleIcon:(0,y.jsx)(S.aAc,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:function(){a()},children:[F&&(0,y.jsx)(f.ZP,{item:!0,xs:12,children:(0,y.jsx)(p.Z,{})}),!F&&(0,y.jsxs)(o.Fragment,{children:[(0,y.jsxs)(f.ZP,{item:!0,xs:12,className:n.shareLinkInfo,children:["This is a temporary URL with integrated access credentials for sharing objects valid for up to 7 days.",(0,y.jsx)("br",{}),(0,y.jsx)("br",{}),"The temporary URL expires after the configured time limit."]}),(0,y.jsx)("br",{}),(0,y.jsx)(f.ZP,{item:!0,xs:12,className:n.dateContainer,children:(0,y.jsx)(N,{initialDate:q,id:"date",label:"Active for",maxDays:7,onChange:function(e,n){H(n),n?M(e):(M(""),w(""))},entity:"Link"})}),(0,y.jsx)(f.ZP,{item:!0,xs:12,className:"".concat(n.copyShareLink," ").concat(n.formFieldRow," "),children:(0,y.jsx)(f.ZP,{item:!0,xs:12,className:n.copyShareLinkInput,children:(0,y.jsx)(g.Z,{content:Z,actionButton:(0,y.jsx)(m(),{text:Z,children:(0,y.jsx)(l.z,{id:"copy-path",variant:"regular",onClick:function(){u((0,T.MK)("Share URL Copied to clipboard"))},disabled:""===Z||D,style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,y.jsx)(I,{})})})})})})]})]})})}))},78562:function(e,n,t){t.r(n),t.d(n,{default:function(){return v}});var i=t(72791),a=t(56028),o=t(4942),s=t(29439),r=t(11135),c=t(25787),l=t(61889),d=t(40986),u=t(47922),h=t(45248),m=t(28182),f=t(80184),p=(0,c.Z)((function(){return(0,r.Z)({iframeContainer:{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.text":{height:700},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},iframeBase:{backgroundColor:"#fff"},iframeHidden:{display:"none"}})}))((function(e){var n=e.bucketName,t=e.object,a=e.isFullscreen,r=void 0!==a&&a,c=e.classes,p=(0,i.useState)(!0),x=(0,s.Z)(p,2),v=x[0],b=x[1],g="";if(t){var j=(0,h.LL)(t.name),Z=document.baseURI.replace(window.location.origin,"");g="".concat(window.location.origin).concat(Z,"api/v1/buckets/").concat(n,"/objects/download?preview=true&prefix=").concat(j),t.version_id&&(g=g.concat("&version_id=".concat(t.version_id)))}var w=(0,u.Bg)((null===t||void 0===t?void 0:t.name)||""),C=function(){b(!1)};return(0,f.jsxs)(i.Fragment,{children:[v&&(0,f.jsx)(l.ZP,{item:!0,xs:12,children:(0,f.jsx)(d.Z,{})}),(0,f.jsxs)("div",{style:{textAlign:"center"},children:["video"===w&&(0,f.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:C,children:(0,f.jsx)("source",{src:g,type:"video/mp4"})}),"audio"===w&&(0,f.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:C,children:(0,f.jsx)("source",{src:g,type:"audio/mpeg"})}),"image"===w&&(0,f.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:g,alt:"preview",onLoad:C}),"video"!==w&&"audio"!==w&&"image"!==w&&(0,f.jsx)("div",{className:(0,m.Z)(c.iframeBase,(0,o.Z)({},c.iframeHidden,v)),children:(0,f.jsx)("iframe",{src:g,title:"File Preview",allowTransparency:!0,className:"".concat(c.iframeContainer," ").concat(r?"fullHeight":w),onLoad:C,children:"File couldn't be loaded. Please try Download instead"})})]})]})})),x=t(38734),v=function(e){var n=e.open,t=e.bucketName,o=e.object,s=e.onClosePreview;return(0,f.jsx)(i.Fragment,{children:(0,f.jsx)(a.Z,{modalOpen:n,title:"Preview - ".concat(null===o||void 0===o?void 0:o.name),onClose:s,wideLimit:!1,titleIcon:(0,f.jsx)(x.$30,{}),children:(0,f.jsx)(p,{bucketName:t,object:o})})})}},47922:function(e,n,t){t.d(n,{Bg:function(){return s},LR:function(){return o},P_:function(){return r},kh:function(){return c}});var i=t(45248),a=t(76610),o=function(e,n,t,o){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,r=arguments.length>5?arguments[5]:void 0,c=arguments.length>6?arguments[6]:void 0,l=arguments.length>7?arguments[7]:void 0,d=arguments.length>8?arguments[8]:void 0,u=arguments.length>9?arguments[9]:void 0,h=document.createElement("a");document.body.appendChild(h);var m=document.baseURI.replace(window.location.origin,""),f="".concat(window.location.origin).concat(m,"api/v1/buckets/").concat(e,"/objects/download?prefix=").concat(n).concat(null!==s&&""!==s.trim()?"&override_file_name=".concat((0,i.LL)(s||"")):"");t&&(f=f.concat("&version_id=".concat(t)));var p=new XMLHttpRequest;return p.open("GET",f,!0),p.addEventListener("progress",(function(e){var n=Math.round(e.loaded/o*100);c&&c(n)}),!1),p.responseType="blob",p.onreadystatechange=function(){if(4===p.readyState)if(200===p.status){var e=p.getResponseHeader("Content-Disposition"),n="download";if(e)n=decodeURIComponent(e).split('"')[1];l&&l(),(0,a.GM)(r);var t=document.createElement("a");t.href=window.URL.createObjectURL(p.response),t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}else{if("application/json"===p.getResponseHeader("Content-Type")){var i=JSON.parse(p.response);if(i.detailedMessage)return void d(i.detailedMessage)}d("Unexpected response status code (".concat(p.status,")."))}},p.onerror=function(){d&&d("A network error occurred.")},p.onabort=function(){u&&u()},p},s=function(e){var n=e.split(".").pop();return n?(n=n.toLowerCase(),["jif","jfif","apng","avif","svg","webp","bmp","ico","jpg","jpe","jpeg","gif","png","heic"].includes(n)?"image":["pdf","txt","json"].includes(n)?"text":["wav","mp3","alac","aiff","dsd","pcm"].includes(n)?"audio":["mp4","avi","mpg","webm","mov","flv","mkv","wmv","avchd","mpeg-4"].includes(n)?"video":"none"):"none"},r=function(e){switch(e){case"name":return function(e,n){return e.name.localeCompare(n.name)};case"last_modified":return function(e,n){return new Date(e.last_modified).getTime()-new Date(n.last_modified).getTime()};case"size":return function(e,n){return(e.size||-1)-(n.size||-1)}}},c=function(e,n,t){if(0===t.length)return null;var i=t.filter((function(n){return n.resource.endsWith(":".concat(e))||n.resource.includes(":".concat(e,"/"))}));if(0===i.length)return null;var a=[],o=n.split("/");return i.forEach((function(e){var n=(e.resource.split(":").pop()||"").split("/");n.length>1&&n.every((function(e,n){return"*"!==e&&((!o[n]||o[n]===e)&&(o[n]||a.push({name:"".concat(e,"/"),size:0,last_modified:new Date,version_id:""}),!0))})),"StringEquals"!==e.conditionOperator&&"StringLike"!==e.conditionOperator||e.prefixes.forEach((function(e){if(""!==e){var n=e.split("/"),t=[];n.every((function(e,n){return!e.includes("*")&&""!==e&&(e!==o[n]?(a.push({name:"".concat(t.join("/")).concat(t.length>0?"/":"").concat(e,"/"),size:0,last_modified:new Date,version_id:""}),!1):(""!==e&&t.push(e),!0))}))}}))})),a}},73996:function(e,n,t){t(72791);var i=t(38734),a=t(60364),o=t(80184);n.Z=function(e){var n=e.marginRight,s=e.marginTop,r=t(47045),c=(0,a.v9)((function(e){return e.system.overrideStyles})),l=r((null===c||void 0===c?void 0:c.backgroundColor)||"#fff").getBrightness()<=128;return(0,o.jsx)(i.BHR,{style:{width:105,marginRight:n,marginTop:s,fill:l?"#fff":"#081C42"}})}},75578:function(e,n,t){var i=t(1413),a=t(72791),o=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function t(t){return(0,o.jsx)(a.Suspense,{fallback:n,children:(0,o.jsx)(e,(0,i.Z)({},t))})}return t}},64163:function(e,n,t){var i=t(1413),a=t(72791),o=t(61889),s=t(11135),r=t(25787),c=t(23814),l=t(80184);n.Z=(0,r.Z)((function(e){return(0,s.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,s=e.content,r=e.multiLine,c=void 0!==r&&r,d=e.actionButton;return(0,l.jsx)(a.Fragment,{children:(0,l.jsxs)(o.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(o.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(o.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(o.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:s}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},56028:function(e,n,t){var i=t(29439),a=t(1413),o=t(72791),s=t(60364),r=t(13400),c=t(55646),l=t(5574),d=t(65661),u=t(39157),h=t(11135),m=t(25787),f=t(23814),p=t(25469),x=t(29823),v=t(28057),b=t(87995),g=t(80184);n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,a.Z)((0,a.Z)({},f.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,h=e.title,m=e.children,f=e.classes,j=e.wideLimit,Z=void 0===j||j,w=e.noContentPadding,C=e.titleIcon,S=void 0===C?null:C,y=(0,p.TL)(),N=(0,o.useState)(!1),_=(0,i.Z)(N,2),T=_[0],E=_[1],I=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,o.useEffect)((function(){y((0,b.MK)(""))}),[y]),(0,o.useEffect)((function(){if(I){if(""===I.message)return void E(!1);"error"!==I.type&&E(!0)}}),[I]);var k=Z?{classes:{paper:f.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return I&&(F=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(F=I.message)),(0,g.jsxs)(l.Z,(0,a.Z)((0,a.Z)({open:t,classes:f},k),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:f.root,children:[(0,g.jsxs)(d.Z,{className:f.title,children:[(0,g.jsxs)("div",{className:f.titleText,children:[S," ",h]}),(0,g.jsx)("div",{className:f.closeContainer,children:(0,g.jsx)(r.Z,{"aria-label":"close",id:"close",className:f.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,g.jsx)(x.Z,{})})})]}),(0,g.jsx)(v.Z,{isModal:!0}),(0,g.jsx)(c.Z,{open:T,className:f.snackBarModal,onClose:function(){E(!1),y((0,b.MK)(""))},message:F,ContentProps:{className:"".concat(f.snackBar," ").concat(I&&"error"===I.type?f.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,g.jsx)(u.Z,{className:w?"":f.content,children:m})]}))}))},59114:function(e,n,t){var i=t(4942),a=t(1413),o=(t(72791),t(63466)),s=t(74900),r=t(27391),c=t(25787),l=t(11135),d=t(23814),u=t(80184);n.Z=(0,c.Z)((function(e){return(0,l.Z)({searchField:(0,a.Z)({},d.qg.searchField),adornment:{}})}))((function(e){var n=e.placeholder,t=void 0===n?"":n,a=e.classes,c=e.onChange,l=e.adornmentPosition,d=void 0===l?"end":l,h=e.overrideClass,m=e.value,f=(0,i.Z)({disableUnderline:!0},"".concat(d,"Adornment"),(0,u.jsx)(o.Z,{position:d,className:a.adornment,children:(0,u.jsx)(s.Z,{})}));return(0,u.jsx)(r.Z,{placeholder:t,className:h||a.searchField,id:"search-resource",label:"",InputProps:f,onChange:function(e){c(e.target.value)},variant:"standard",value:m})}))},27454:function(e,n,t){var i=t(1413),a=t(72791),o=t(20068),s=t(80184);n.Z=function(e){var n=e.tooltip,t=e.children,r=e.errorProps,c=void 0===r?null:r;return(0,s.jsx)(o.Z,{title:n,children:(0,s.jsx)("span",{children:c?(0,a.cloneElement)(t,(0,i.Z)({},c)):t})})}},73669:function(e,n,t){var i=t(29439),a=t(72791),o=t(64554),s=t(75952),r=t(21435),c=t(38734),l=t(80184);n.Z=function(e){var n=e.value,t=(0,a.useState)(!1),d=(0,i.Z)(t,2),u=d[0],h=d[1];return(0,l.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,l.jsx)(r.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:u?"text":"password",onChange:function(){},value:n,overlayIcon:(0,l.jsx)(c.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(n)}}),(0,l.jsx)(s.z,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return h(!u)},label:"Show/Hide"})]})}}}]); -//# sourceMappingURL=1379.c2ecb9aa.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js.map b/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js.map deleted file mode 100644 index 4fe961eb3..000000000 --- a/portal-ui/build/static/js/1379.c2ecb9aa.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1379.c2ecb9aa.chunk.js","mappings":"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","sources":["screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectActionButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Buckets/ListBuckets/Objects/utils.ts","screens/Console/Common/Components/AutoColorIcon.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport { objectBrowserCommon } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { BackCaretIcon, CopyIcon, NewPathIcon } from \"../../../icons\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../common/SecureComponent/permissions\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { Button } from \"mds\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\")\n )\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...objectBrowserCommon,\n slashSpacingStyle: {\n margin: \"0 5px\",\n },\n });\n\ninterface IObjectBrowser {\n classes: any;\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n existingFiles: BucketObjectItem[];\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n classes,\n bucketName,\n internalPaths,\n existingFiles,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/buckets/${bucketName}/browse/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n {objectItem}\n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" })\n );\n }}\n >\n {objectItem}\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n navigate(-1);\n }\n };\n\n return (\n \n
\n {createFolderOpen && (\n \n )}\n \n \n \n \n
\n {listBreadcrumbs}\n
\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n
{additionalOptions}
\n
\n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={\n rewindEnabled ||\n !hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT])\n }\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n
\n
{additionalOptions}
\n
\n );\n};\n\nexport default withStyles(styles)(BrowserBreadcrumbs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport { UploadFolderIcon, UploadIcon } from \"../../../../icons\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport { Button } from \"mds\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n listUploadIcons: {\n height: 20,\n \"& .min-icon\": {\n width: 18,\n fill: \"rgba(0,0,0,0.87)\",\n },\n },\n });\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n classes,\n}: IUploadFilesButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed = hasPermission(uploadPath, [\n IAM_SCOPES.S3_PUT_OBJECT,\n ]);\n const uploadFolderAllowed = hasPermission(\n bucketName,\n [IAM_SCOPES.S3_PUT_OBJECT],\n false,\n true\n );\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n />\n \n {\n handleCloseUpload();\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {\n uploadFileFunction(handleCloseUpload);\n }}\n disabled={!uploadObjectAllowed || forceDisable}\n >\n \n \n \n Upload File\n \n {\n uploadFolderFunction(handleCloseUpload);\n }}\n disabled={!uploadFolderAllowed || forceDisable}\n >\n \n \n \n Upload Folder\n \n \n \n );\n};\n\nexport default withStyles(styles)(UploadFilesButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport { ClosePanelIcon } from \"../../../../../../icons\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailsList: {\n borderColor: \"#EAEDEE\",\n borderWidth: 0,\n borderStyle: \"solid\",\n borderRadius: 3,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n width: 0,\n transitionDuration: \"0.3s\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n position: \"relative\",\n opacity: 0,\n marginLeft: -1,\n \"&.open\": {\n width: 300,\n minWidth: 300,\n borderLeftWidth: 1,\n opacity: 1,\n },\n \"@media (max-width: 799px)\": {\n \"&.open\": {\n width: \"100%\",\n minWidth: \"100%\",\n borderLeftWidth: 0,\n },\n },\n },\n closePanel: {\n position: \"absolute\",\n right: 0,\n top: 8,\n \"& .min-icon\": {\n width: 14,\n },\n },\n })\n);\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => num + 1);\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(\n Array(25),\n (_, numYear) => numYear + currentYear\n);\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport InputBase from \"@mui/material/InputBase\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport FormSwitchWrapper from \"../FormSwitchWrapper/FormSwitchWrapper\";\nimport { days, months, validDate, years } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateInput: {\n \"&:not(:last-child)\": {\n marginRight: 22,\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n flex: 1,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n fieldContainerBorder: {\n borderBottom: \"#9c9c9c 1px solid\",\n marginBottom: 20,\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n \"& .MuiSelect-icon\": {\n color: \"#000\",\n \"&.Mui-disabled\": {\n color: \"#9c9c9c\",\n },\n },\n },\n input: {\n borderBottom: 0,\n fontSize: 12,\n },\n })\n)(InputBase);\n\ninterface IDateSelectorProps {\n classes: any;\n id: string;\n label: string;\n disableOptions?: boolean;\n addSwitch?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n classes,\n id,\n label,\n disableOptions = false,\n addSwitch = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [dateEnabled, setDateEnabled] = useState(false);\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else if (addSwitch) {\n return !dateEnabled;\n } else {\n return false;\n }\n };\n\n const onMonthChange = (e: SelectChangeEvent) => {\n setMonth(e.target.value as string);\n };\n\n const onDayChange = (e: SelectChangeEvent) => {\n setDay(e.target.value as string);\n };\n\n const onYearChange = (e: SelectChangeEvent) => {\n setYear(e.target.value as string);\n };\n\n return (\n \n
\n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n {addSwitch && (\n {\n setDateEnabled(e.target.checked);\n if (!e.target.checked) {\n onDateChange(\"\", true);\n }\n }}\n switchOnly\n />\n )}\n
\n
\n
\n \n }\n >\n \n {\"\"}\n \n {months.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {days.map((dayNumber) => (\n \n {dayNumber}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {years.map((year) => (\n \n {year}\n \n ))}\n \n \n
\n \n );\n }\n);\n\nexport default withStyles(styles)(DateSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\n\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n dateSelector: {\n \"& div\": {\n borderBottom: 0,\n marginBottom: 0,\n\n \"& div:nth-child(2)\": {\n border: \"1px solid #EAEAEA\",\n paddingLeft: 5,\n\n \"& div\": {\n border: 0,\n },\n },\n },\n },\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: IFileInfo;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(objectInfo.retention_mode.toLowerCase());\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(\"\");\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string\n ) => {\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`,\n {\n expires: expireDate,\n mode: type,\n }\n )\n .then((res: any) => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null\n ) => {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name;\n const versionId = objectInfo.version_id;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n
\n Selected Object: {objectName}\n
\n ) => {\n onSubmit(e);\n }}\n >\n {showSwitcher && (\n \n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n {\n setType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Governance\", value: \"governance\" },\n { label: \"Compliance\", value: \"compliance\" },\n ]}\n />\n \n \n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetRetention);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioning: boolean;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n\n versioning,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {versioning && selectedVersion === \"\" && (\n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: IFileInfo;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/legalhold?prefix=${encodeURLString(\n objectName\n )}&version_id=${versionId}`,\n { status: legalHoldEnabled ? \"enabled\" : \"disabled\" }\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","import React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { MetadataResponse } from \"./types\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, Table, TableBody, TableCell, TableRow } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n detailsPanel,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { withStyles } from \"@mui/styles\";\n\ninterface IObjectMetadata {\n bucketName: string;\n internalPaths: string;\n classes?: any;\n actualInfo: any;\n linear?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n propertiesIcon: {\n marginLeft: 5,\n \"& .min-icon\": {\n height: 12,\n },\n },\n\n capitalizeFirst: {\n textTransform: \"capitalize\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n },\n },\n titleItem: {\n width: \"35%\",\n },\n ...spacingUtils,\n ...detailsPanel,\n });\n\nconst ObjectMetaData = ({\n bucketName,\n internalPaths,\n classes,\n actualInfo,\n linear = false,\n}: IObjectMetadata) => {\n const [metaData, setMetaData] = useState({});\n\n const onMetaDataSuccess = (res: MetadataResponse) => {\n let metadata = get(res, \"objectMetadata\", {});\n\n setMetaData(metadata);\n };\n const onMetaDataError = (err: ErrorResponseHandler) => false;\n\n const [, invokeMetaDataApi] = useApi(onMetaDataSuccess, onMetaDataError);\n\n const metaKeys = Object.keys(metaData);\n const loadMetaData = useCallback(() => {\n invokeMetaDataApi(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/metadata?prefix=${internalPaths}`\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName, internalPaths, actualInfo]);\n\n useEffect(() => {\n if (actualInfo) {\n loadMetaData();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [actualInfo, loadMetaData]);\n\n if (linear) {\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n }\n\n return (\n \n \n \n Object Metadata\n \n \n\n \n \n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n \n {element}\n \n {renderItem}\n \n );\n })}\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(ObjectMetaData);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport clsx from \"clsx\";\n\ntype ObjectActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n icon: React.ReactNode;\n label: string;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: \"0 15px\",\n height: 22,\n margin: 0,\n color: \"#5E5E5E\",\n fontWeight: \"normal\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n \"&:hover\": {\n backgroundColor: \"transparent\",\n color: \"#000\",\n },\n \"& .min-icon\": {\n width: 11,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n });\n\n// TODO: Create an mds version of this.\nconst ObjectActionButton = ({\n disabled,\n onClick,\n icon,\n label,\n classes,\n ...restProps\n}: ObjectActionButtonProps) => {\n return (\n \n {label}\n \n );\n};\n\nexport default withStyles(styles)(ObjectActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ObjectActionButton from \"./ObjectActionButton\";\nimport { withStyles } from \"@mui/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { detailsPanel } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = () =>\n createStyles({\n ...detailsPanel,\n });\n\nexport interface MultiSelectionItem {\n action: () => void;\n label: string;\n disabled: boolean;\n icon: React.ReactNode;\n tooltip: string;\n}\n\ninterface IActionsListSectionProps {\n items: MultiSelectionItem[];\n title: string | React.ReactNode;\n classes: any;\n}\n\nconst ActionsListSection = ({\n items,\n classes,\n title,\n}: IActionsListSectionProps) => {\n return (\n \n
{title}
\n
    \n
  • Actions:
  • \n {items.map((actionItem, index) => {\n return (\n
  • \n \n
  • \n );\n })}\n
\n
\n );\n};\n\nexport default withStyles(styles)(ActionsListSection);\n","import React from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ninterface IIconWithLabel {\n classes: any;\n icon: JSX.Element;\n strings: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n fileName: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n minWidth: 16,\n minHeight: 16,\n },\n },\n fileNameText: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n });\n\nconst IconWithLabel = ({ classes, icon, strings }: IIconWithLabel) => {\n return (\n
\n {icon}\n \n {strings[strings.length - 1]}\n \n
\n );\n};\n\nexport default withStyles(styles)(IconWithLabel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport ObjectBrowserIcon from \"../../../../../../icons/ObjectBrowserIcon\";\nimport ObjectBrowserFolderIcon from \"../../../../../../icons/ObjectBrowserFolderIcon\";\nimport IconWithLabel from \"./IconWithLabel\";\n\nconst FileBookIcon = React.lazy(\n () => import(\"../../../../../../icons/FileBookIcon\")\n);\nconst FileCodeIcon = React.lazy(\n () => import(\"../../../../../../icons/FileCodeIcon\")\n);\nconst FileConfigIcon = React.lazy(\n () => import(\"../../../../../../icons/FileConfigIcon\")\n);\nconst FileDbIcon = React.lazy(\n () => import(\"../../../../../../icons/FileDbIcon\")\n);\nconst FileFontIcon = React.lazy(\n () => import(\"../../../../../../icons/FileFontIcon\")\n);\nconst FileImageIcon = React.lazy(\n () => import(\"../../../../../../icons/FileImageIcon\")\n);\nconst FileLockIcon = React.lazy(\n () => import(\"../../../../../../icons/FileLockIcon\")\n);\nconst FileMissingIcon = React.lazy(\n () => import(\"../../../../../../icons/FileMissingIcon\")\n);\nconst FileMusicIcon = React.lazy(\n () => import(\"../../../../../../icons/FileMusicIcon\")\n);\nconst FilePdfIcon = React.lazy(\n () => import(\"../../../../../../icons/FilePdfIcon\")\n);\nconst FilePptIcon = React.lazy(\n () => import(\"../../../../../../icons/FilePptIcon\")\n);\nconst FileTxtIcon = React.lazy(\n () => import(\"../../../../../../icons/FileTxtIcon\")\n);\nconst FileVideoIcon = React.lazy(\n () => import(\"../../../../../../icons/FileVideoIcon\")\n);\nconst FileXlsIcon = React.lazy(\n () => import(\"../../../../../../icons/FileXlsIcon\")\n);\nconst FileZipIcon = React.lazy(\n () => import(\"../../../../../../icons/FileZipIcon\")\n);\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"txt\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Grid } from \"@mui/material\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n AddNewTagIcon,\n DisabledIcon,\n EditTagIcon,\n} from \"../../../../../../icons\";\nimport { IFileInfo } from \"./types\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: IFileInfo;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name);\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: newTagList }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: cleanObject }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
\n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
\n );\n\n return (\n \n Delete Tag\n ) : (\n `Edit Tags`\n )\n }\n onClose={() => {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
\n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n \n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button } from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { InspectMenuIcon } from \"../../../../../../icons/SidebarMenus\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { PasswordKeyIcon } from \"../../../../../../icons\";\nimport { Box, DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n })\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n
\n \n ) : null}\n
\n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { EditIcon } from \"../../../icons\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: IFileInfo;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n\n const identityDownload = encodeURLString(\n `${bucketName}-${\n actualInfo.name\n }-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n actualInfo.version_id,\n parseInt(actualInfo.size || \"0\"),\n newFileName,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: newFileName,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n closeModal();\n };\n\n return (\n }\n >\n
\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n buttonsStyles,\n detailsPanel,\n spacingUtils,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../ObjectDetails/types\";\nimport { download, extensionPreview } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n getClientOS,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n DeleteIcon,\n DownloadIcon,\n LegalHoldIcon,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n TagsIcon,\n VersionsIcon,\n} from \"../../../../../../icons\";\nimport { InspectMenuIcon } from \"../../../../../../icons/SidebarMenus\";\nimport api from \"../../../../../../common/api\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { displayFileIconName } from \"./utils\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport Loader from \"../../../../Common/Loader/Loader\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\n\nconst styles = () =>\n createStyles({\n ObjectDetailsTitle: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 26,\n height: 26,\n minWidth: 26,\n minHeight: 26,\n },\n },\n objectNameContainer: {\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n alignItems: \"center\",\n marginLeft: 10,\n },\n headerForSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 15,\n borderBottom: \"#E2E2E2 2px solid\",\n fontWeight: \"bold\",\n fontSize: 18,\n color: \"#000\",\n margin: \"20px 22px\",\n },\n capitalizeFirst: {\n textTransform: \"capitalize\",\n },\n ...buttonsStyles,\n ...actionsTray,\n ...spacingUtils,\n ...textStyleUtils,\n ...detailsPanel,\n });\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\ninterface IObjectDetailPanelProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n versioning: boolean;\n locking: boolean;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n classes,\n internalPaths,\n bucketName,\n versioning,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: IFileInfo) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: IFileInfo) => el.version_id === selectedVersion\n ) || emptyFile;\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n const tVersionSize = result.reduce(\n (acc: number, currValue: IFileInfo) => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n setActualInfo(result[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((error: ErrorResponseHandler) => {\n console.error(\"Error loading object details\", error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n if (\n object.name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n setLongFileOpen(true);\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(actualInfo);\n },\n label: \"Download\",\n disabled:\n !!actualInfo.is_delete_marker ||\n !hasPermission(objectResources, [IAM_SCOPES.S3_GET_OBJECT]),\n icon: ,\n tooltip: \"Download this Object\",\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled:\n !!actualInfo.is_delete_marker ||\n !hasPermission(objectResources, [IAM_SCOPES.S3_GET_OBJECT]),\n icon: ,\n tooltip: \"Share this File\",\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n extensionPreview(currentItem) === \"none\" ||\n !hasPermission(objectResources, [IAM_SCOPES.S3_GET_OBJECT]),\n icon: ,\n tooltip: \"Preview this File\",\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD]) ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: \"Change Legal Hold rules for this File\",\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !hasPermission(objectResources, [IAM_SCOPES.S3_GET_OBJECT_RETENTION]) ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: \"Change Retention rules for this File\",\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !hasPermission(objectResources, [IAM_SCOPES.S3_PUT_OBJECT_TAGGING]),\n icon: ,\n tooltip: \"Change Tags for this File\",\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !hasPermission(objectResources, [IAM_SCOPES.ADMIN_INSPECT_DATA]),\n icon: ,\n tooltip: \"Inspect this file\",\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n })\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n ]),\n tooltip: \"Display Versions for this file\",\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName, true)}\n \n {objectName}\n \n \n }\n items={multiActionButtons}\n />\n\n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={selectedVersion === \"\" && actualInfo.is_delete_marker}\n style={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n Object Info\n \n \n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(actualInfo.size || \"0\")}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified)}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n \n Metadata\n \n \n \n {actualInfo ? (\n \n ) : null}\n \n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(ObjectDetailPanel);\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 * as reactMoment from \"react-moment\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n return {object.last_modified};\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n contentTextAlign: \"center\",\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n contentTextAlign: \"center\",\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n contentTextAlign: \"center\",\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, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport api from \"../../../../../../common/api\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport RecoverIcon from \"../../../../../../icons/RecoverIcon\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionID: string;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionID,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/restore?prefix=${encodeURLString(\n objectPath\n )}&version_id=${versionID}`\n )\n .then((res: any) => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionID}?\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport * as reactMoment from \"react-moment\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { withStyles } from \"@mui/styles\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport { IFileInfo } from \"./types\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n} from \"../../../../../../icons\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: IFileInfo;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: IFileInfo) => void;\n onDownload: (versionInfo: IFileInfo) => void;\n onRestore: (versionInfo: IFileInfo) => void;\n onPreview: (versionInfo: IFileInfo) => void;\n globalClick: (versionInfo: IFileInfo) => void;\n classes: any;\n key: any;\n style: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainFileVersionItem: {\n borderBottom: \"#E2E2E2 1px solid\",\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n \"@media (max-width: 799px)\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n },\n intermediateLayer: {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: \"#F8F8F8\",\n \"& > div\": {\n borderBottomColor: \"#F8F8F8\",\n },\n },\n \"@media (max-width: 799px)\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: \"#E2E2E2\",\n },\n },\n },\n },\n versionContainer: {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n \"@media (max-width: 799px)\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n },\n buttonContainer: {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n \"@media (max-width: 600px)\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n versionID: {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n versionData: {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n \"@media (max-width: 799px)\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n },\n ctrItem: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n collapsableInfo: {\n \"@media (max-width: 799px)\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n versionItem: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n });\n\nconst FileVersionItem = ({\n classes,\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n return (\n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n \n {versionInfo.last_modified}\n \n \n \n Size: {niceBytes(versionInfo.size || \"0\")}\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FileVersionItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}&non_current_versions=true`\n )\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
\n
\n To continue please type YES, PROCEED in the box.\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../../../icons\";\nimport api from \"../../../../../../common/api\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api\n .invoke(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=false`,\n selectedObjectsRequest\n )\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n buttonsStyles,\n containerForHeader,\n hrClass,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { download } from \"../utils\";\nimport api from \"../../../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n DeleteIcon,\n DeleteNonCurrentIcon,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"../../../../../../icons\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport { Button } from \"mds\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n height: \"40px\",\n bottom: 0,\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...hrClass,\n ...buttonsStyles,\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\"\");\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: IFileInfo) => item.name === decodedInternalPaths\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: IFileInfo) => el.is_latest) ||\n emptyFile\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const onShareItem = (item: IFileInfo) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: IFileInfo) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: IFileInfo) => {\n setRestoreVersion(item.version_id || \"\");\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: IFileInfo) => {\n downloadObject(item);\n };\n\n const onGlobalClick = (item: IFileInfo) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(\"\");\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: IFileInfo) => {\n if (currValue.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified).getTime();\n const dateB = new Date(b.last_modified).getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={\n \n {objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name}{\" \"}\n Versions\n \n }\n subTitle={\n \n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n Sort by\n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Date\", value: \"date\" },\n {\n label: \"Size\",\n value: \"size\",\n },\n ]}\n />\n \n }\n className={classes.noBottomBorder}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport get from \"lodash/get\";\nimport { BucketObjectItem, BucketObjectItemsList } from \"./types\";\nimport api from \"../../../../../../common/api\";\nimport TableWrapper, {\n ItemActions,\n} from \"../../../../Common/TableWrapper/TableWrapper\";\nimport {\n decodeURLString,\n encodeURLString,\n getClientOS,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n searchField,\n tableStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Badge, Typography } from \"@mui/material\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport {\n download,\n extensionPreview,\n permissionItems,\n sortListObjects,\n} from \"../utils\";\nimport {\n BucketInfo,\n BucketObjectLocking,\n BucketQuota,\n BucketVersioning,\n} from \"../../../types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport PageLayout from \"../../../../Common/Layout/PageLayout\";\n\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport {\n BucketsIcon,\n DownloadIcon,\n PreviewIcon,\n ShareIcon,\n} from \"../../../../../../icons\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\n\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetRewind,\n setLoadingObjectInfo,\n setLoadingObjectsList,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setSearchObjects,\n setSelectedObjectView,\n setShowDeletedObjects,\n setSimplePathHandler,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst HistoryIcon = React.lazy(\n () => import(\"../../../../../../icons/HistoryIcon\")\n);\nconst RefreshIcon = React.lazy(\n () => import(\"../../../../../../icons/RefreshIcon\")\n);\n\nconst DeleteIcon = React.lazy(\n () => import(\"../../../../../../icons/DeleteIcon\")\n);\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\"))\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\"))\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n height: \"calc(100vh - 210px)\",\n \"&.isEmbedded\": {\n height: \"calc(100vh - 315px)\",\n },\n \"&.actionsPanelOpen\": {\n minHeight: \"100%\",\n },\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n\n badgeOverlap: {\n \"& .MuiBadge-badge\": {\n top: 10,\n right: 1,\n width: 5,\n height: 5,\n minWidth: 5,\n },\n },\n screenTitle: {\n borderBottom: 0,\n paddingTop: 0,\n paddingLeft: 0,\n paddingRight: 0,\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n screenTitleContainer: {\n border: \"#EAEDEE 1px solid\",\n padding: \"0.8rem 15px 0\",\n },\n labelStyle: {\n color: \"#969FA8\",\n fontSize: \"12px\",\n },\n breadcrumbsContainer: {\n padding: \"12px 14px 5px\",\n },\n parentWrapper: {\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n },\n fullContainer: {\n \"@media (max-width: 799px)\": {\n width: 0,\n },\n },\n hideListOnSmall: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n ...objectBrowserExtras,\n ...objectBrowserCommon,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"#eeeeee\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#00e676\",\n};\n\nfunction useInterval(callback: any, delay: number) {\n const savedCallback = useRef(null);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n if (savedCallback !== undefined && savedCallback.current) {\n savedCallback.current();\n }\n }\n\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nconst defLoading = Loading...;\n\nconst ListObjects = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const loading = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const allowResources = useSelector(\n (state: AppState) => state.console.session.allowResources\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const [records, setRecords] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [loadingStartTime, setLoadingStartTime] = useState(0);\n const [loadingMessage, setLoadingMessage] =\n useState(defLoading);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [isVersioned, setIsVersioned] = useState(false);\n const [loadingLocking, setLoadingLocking] = useState(true);\n const [lockingEnabled, setLockingEnabled] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [selectedObjects, setSelectedObjects] = useState([]);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [selectedPreview, setSelectedPreview] =\n useState(null);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n const [downloadRenameModal, setDownloadRenameModal] =\n useState(null);\n\n const pathSegment = location.pathname.split(\"/browse/\");\n\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n const bucketName = params.bucketName || \"\";\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n\n if (extensionPreview(objectName) !== \"none\") {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\")) {\n setCanShareFile(false);\n } else {\n setCanShareFile(true);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects]);\n\n useEffect(() => {\n if (!quota) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n let quotaVals = null;\n\n if (res.quota) {\n quotaVals = res;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\"Error Getting Quota Status: \", err.detailedError);\n setQuota(null);\n });\n }\n }, [quota, bucketName]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (selectedObjects.length === 0 && selectedInternalPaths === null) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch]);\n\n const displayDeleteObject = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_OBJECT,\n ]);\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n ]);\n\n const updateMessage = () => {\n let timeDelta = Date.now() - loadingStartTime;\n\n if (timeDelta / 1000 >= 6) {\n setLoadingMessage(\n \n \n This operation is taking longer than expected... (\n {Math.ceil(timeDelta / 1000)}s)\n \n \n );\n } else if (timeDelta / 1000 >= 3) {\n setLoadingMessage(\n \n This operation is taking longer than expected...\n \n );\n }\n };\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n useInterval(() => {\n // Your custom logic here\n if (loading) {\n updateMessage();\n }\n }, 1000);\n\n useEffect(() => {\n if (loadingVersioning) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioning) => {\n setIsVersioned(res.is_versioned);\n setLoadingVersioning(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.detailedError\n );\n setLoadingVersioning(false);\n });\n } else {\n setLoadingVersioning(false);\n setRecords([]);\n }\n }\n }, [bucketName, loadingVersioning, dispatch, displayListObjects]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n setLockingEnabled(res.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n setLoadingLocking(false);\n });\n } else {\n setRecords([]);\n setLoadingLocking(false);\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(\n setSimplePathHandler(decodedIPaths === \"\" ? \"/\" : decodedIPaths)\n );\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`\n )\n );\n dispatch(\n setSimplePathHandler(\n `${decodedIPaths.split(\"/\").slice(0, -1).join(\"/\")}/`\n )\n );\n }\n }, [internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n useEffect(() => {\n dispatch(setSearchObjects(\"\"));\n dispatch(setLoadingObjectsList(true));\n setSelectedObjects([]);\n }, [simplePath, dispatch, setSelectedObjects]);\n\n useEffect(() => {\n if (loading) {\n if (displayListObjects) {\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n let currentTimestamp = Date.now();\n setLoadingStartTime(currentTimestamp);\n setLoadingMessage(defLoading);\n\n // We get URL to look into\n let urlTake = `/api/v1/buckets/${bucketName}/objects`;\n\n // Is rewind enabled?, we use Rewind API\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n\n if (rewindDate) {\n const rewindParsed = rewindDate.toISOString();\n\n urlTake = `/api/v1/buckets/${bucketName}/rewind/${rewindParsed}`;\n }\n } else if (showDeleted) {\n // Do we want to display deleted items too?, we use rewind to current time to show everything\n const currDate = new Date();\n const currDateISO = currDate.toISOString();\n\n urlTake = `/api/v1/buckets/${bucketName}/rewind/${currDateISO}`;\n }\n\n api\n .invoke(\n \"GET\",\n `${urlTake}${\n pathPrefix ? `?prefix=${encodeURLString(pathPrefix)}` : ``\n }`\n )\n .then((res: BucketObjectItemsList) => {\n const records: BucketObjectItem[] = res.objects || [];\n const folders: BucketObjectItem[] = [];\n const files: BucketObjectItem[] = [];\n\n // We separate items between folders or files to display folders at the beginning always.\n records.forEach((record) => {\n // We omit files from the same path\n if (record.name !== decodeURLString(internalPaths)) {\n // this is a folder\n if (record.name.endsWith(\"/\")) {\n folders.push(record);\n } else {\n // this is a file\n files.push(record);\n }\n }\n });\n\n const recordsInElement = [...folders, ...files];\n\n if (recordsInElement.length === 0 && pathPrefix !== \"\") {\n let pathTest = `/api/v1/buckets/${bucketName}/objects${\n internalPaths ? `?prefix=${internalPaths}` : \"\"\n }`;\n\n if (rewindEnabled) {\n const rewindParsed = rewindDate.toISOString();\n\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n pathTest = `/api/v1/buckets/${bucketName}/rewind/${rewindParsed}${\n pathPrefix ? `?prefix=${encodeURLString(pathPrefix)}` : ``\n }`;\n }\n\n api\n .invoke(\"GET\", pathTest)\n .then((res: BucketObjectItemsList) => {\n //It is a file since it has elements in the object, setting file flag and waiting for component mount\n if (!res.objects) {\n // It is a folder, we remove loader & set original results list\n dispatch(setLoadingObjectsList(false));\n setRecords(recordsInElement);\n } else {\n // This code prevents the program from opening a file when a substring of that file is entered as a new folder.\n // Previously, if there was a file test1.txt and the folder test was created with the same prefix, the program\n // would open test1.txt instead\n let found = false;\n let pathPrefixChopped = pathPrefix.slice(\n 0,\n pathPrefix.length - 1\n );\n for (let i = 0; i < res.objects.length; i++) {\n if (res.objects[i].name === pathPrefixChopped) {\n found = true;\n }\n }\n if (\n (res.objects.length === 1 &&\n res.objects[0].name.endsWith(\"/\")) ||\n !found\n ) {\n // This is a folder, we set the original results list\n setRecords(recordsInElement);\n } else {\n // This is a file. We change URL & Open file details view.\n dispatch(setObjectDetailsView(true));\n dispatch(setSelectedObjectView(internalPaths));\n\n // We split the selected object URL & remove the last item to fetch the files list for the parent folder\n const parentPath = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n\n api\n .invoke(\n \"GET\",\n `${urlTake}${\n pathPrefix\n ? `?prefix=${encodeURLString(parentPath)}`\n : ``\n }`\n )\n .then((res: BucketObjectItemsList) => {\n const records: BucketObjectItem[] = res.objects || [];\n\n setRecords(records);\n })\n .catch(() => {});\n }\n\n dispatch(setLoadingObjectsList(false));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setLoadingObjectsList(false));\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setRecords(recordsInElement);\n dispatch(setLoadingObjectsList(false));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n const permitItems = permissionItems(\n bucketName,\n pathPrefix,\n allowResources || []\n );\n\n if (!permitItems || permitItems.length === 0) {\n dispatch(setErrorSnackMessage(err));\n } else {\n setRecords(permitItems);\n }\n\n dispatch(setLoadingObjectsList(false));\n });\n } else {\n dispatch(setLoadingObjectsList(false));\n }\n }\n }, [\n loading,\n dispatch,\n bucketName,\n rewindEnabled,\n rewindDate,\n internalPaths,\n bucketInfo,\n showDeleted,\n displayListObjects,\n bucketToRewind,\n allowResources,\n ]);\n\n // bucket info\n useEffect(() => {\n if (loadingBucket) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}`)\n .then((res: BucketInfo) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [bucketName, loadingBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n setSelectedObjects([]);\n dispatch(setLoadingObjectsList(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (var i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const openPath = (idElement: string) => {\n setSelectedObjects([]);\n\n const newPath = `/buckets/${bucketName}/browse${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n navigate(newPath);\n\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`\n )\n );\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function (event) {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n })\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", (event) => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n })\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setLoadingObjectsList(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n\n storeFormDataWithID(ID, formData);\n storeCallForObjectWithID(ID, xhr);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\"\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setLoadingObjectsList(true));\n setSelectedObjects([]);\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath]\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0) {\n let newFolderPath: string = acceptedFiles[0].path;\n uploadObject(acceptedFiles, newFolderPath);\n }\n },\n [uploadObject]\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept]\n );\n\n const openPreview = () => {\n if (selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n fileObject = filteredRecords.find(findFunction);\n\n if (fileObject) {\n setSelectedPreview(fileObject);\n setPreviewOpen(true);\n }\n }\n };\n\n const openShare = () => {\n if (selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n fileObject = filteredRecords.find(findFunction);\n\n if (fileObject) {\n setSelectedPreview(fileObject);\n setShareFileModalOpen(true);\n }\n }\n };\n\n const closeShareModal = () => {\n setShareFileModalOpen(false);\n setSelectedPreview(null);\n };\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n setPreviewOpen(false);\n setSelectedPreview(null);\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedObjects(elements);\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setLoadingObjectsList(true));\n };\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n setSelectedObjects([]);\n return;\n }\n\n const elements = payload.map((item) => item.name);\n setSelectedObjects(elements);\n };\n\n const downloadSelected = () => {\n if (selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n selectedObjects.includes(currValue.name);\n\n itemsToDownload = filteredRecords.filter(filterFunction);\n\n // I case just one element is selected, then we trigger download modal validation.\n // We are going to enforce zip download when multiple files are selected\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n setDownloadRenameModal(itemsToDownload[0]);\n return;\n }\n }\n\n itemsToDownload.forEach((filteredItem) => {\n downloadObject(filteredItem);\n });\n }\n };\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/buckets/${bucketName}/browse/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n setSelectedObjects([]);\n\n if (forceRefresh) {\n dispatch(setLoadingObjectsList(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n setDownloadRenameModal(null);\n };\n\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n label: \"View\",\n onClick: openPath,\n sendOnlyId: true,\n },\n ];\n\n const multiActionButtons = [\n {\n action: downloadSelected,\n label: \"Download\",\n disabled: selectedObjects.length === 0,\n icon: ,\n tooltip: \"Download Selected\",\n },\n {\n action: openShare,\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: \"Share Selected File\",\n },\n {\n action: openPreview,\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: \"Preview Selected File\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled:\n !hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]) ||\n selectedObjects.length === 0 ||\n !displayDeleteObject,\n tooltip: \"Delete Selected Files\",\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n \n \n \n \n \n }\n title={{bucketName}}\n subTitle={\n \n \n \n Created:   \n {bucketInfo?.creation_date || \"\"}\n \n \n Access:   \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n / {niceBytesInt(quota.quota)}\n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n \n }\n actions={\n \n
\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioned ||\n !hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT])\n }\n />\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(setLoadingObjectsList(true));\n }\n }}\n disabled={\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n
\n
\n }\n />\n
\n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n \n \n \n \n )\n }\n hidePathButton={false}\n />\n \n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n />\n \n \n )}\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? classes.hideListOnSmall : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport SettingsIcon from \"../../../../icons/SettingsIcon\";\n\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport BackLink from \"../../../../common/BackLink\";\nimport {\n setSearchObjects,\n setSearchVersions,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport AutoColorIcon from \"../../Common/Components/AutoColorIcon\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { Button } from \"mds\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n const location = useLocation();\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n\n const features = useSelector(selFeatures);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(\"/browse/\");\n\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n useEffect(() => {\n dispatch(setVersionsModeEnabled({ status: false }));\n }, [internalPaths, dispatch]);\n\n const openBucketConfiguration = () => {\n navigate(`/buckets/${bucketName}/admin`);\n };\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n return (\n \n {!obOnly ? (\n }\n actions={\n \n \n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n )}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(BrowserHandler);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport moment from \"moment/moment\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport InputBoxWrapper from \"../InputBoxWrapper/InputBoxWrapper\";\nimport { LinkIcon } from \"../../../../../icons\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n dateInputContainer: {\n margin: \"0 10px\",\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number\n) => {\n return moment(initialDate)\n .add(days, \"days\")\n .add(hours, \"hours\")\n .add(minutes, \"minutes\");\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(moment());\n\n useEffect(() => {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes\n )\n );\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n onChange(dateSelected.format(\"YYYY-MM-DDTHH:mm:ss\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraInputProps = {\n style: {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 25,\n },\n className: \"removeArrows\" as const,\n };\n\n return (\n \n \n \n \n {label}\n \n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
\n \n
\n {entity} will be available until:\n
{\" \"}\n
\n {dateSelected.format(\"MM/DD/YYYY HH:mm:ss\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { ShareIcon } from \"../../../../../../icons\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst CopyIcon = React.lazy(() => import(\"../../../../../../icons/CopyIcon\"));\n\nconst styles = (theme: Theme) =>\n createStyles({\n shareLinkInfo: {\n fontSize: 14,\n fontWeight: 400,\n },\n copyShareLink: {\n display: \"flex\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n },\n copyShareLinkInput: {\n \"& div:first-child\": {\n marginTop: 0,\n },\n \"@media (max-width: 900px)\": {\n minWidth: 250,\n },\n },\n copyShareLinkBtn: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n marginTop: 10,\n },\n },\n ...modalStyleUtils,\n ...formFieldStyles,\n });\n\ninterface IShareFileProps {\n classes: any;\n open: boolean;\n bucketName: string;\n dataObject: IFileInfo;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n classes,\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${encodeURLString(\n dataObject.name\n )}${distributedSetup ? \"&with_versions=true\" : \"\"}`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const latestVersion = result.find(\n (elem: IFileInfo) => elem.is_latest\n );\n\n if (latestVersion) {\n setVersionID(latestVersion.version_id);\n return;\n }\n\n // Version couldn't ve retrieved, we default\n setVersionID(\"null\");\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000\n );\n\n if (diffDate > 0) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/share?prefix=${encodeURLString(\n dataObject.name\n )}&version_id=${versionID}${\n selectedDate !== \"\" ? `&expires=${diffDate}s` : \"\"\n }`\n )\n .then((res: string) => {\n setShareURL(res);\n setIsLoadingFile(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
\n
\n The temporary URL expires after the configured time limit.\n
\n
\n \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\n \"Share URL Copied to clipboard\"\n )\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n />\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(ShareFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, LinearProgress } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { extensionPreview } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n const objectType = extensionPreview(object?.name || \"\");\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {loading && (\n \n \n \n )}\n
\n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n
\n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"../../../../../../icons\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { BucketObjectItem } from \"./ListObjects/types\";\nimport { IAllowResources } from \"../../../types\";\nimport { encodeURLString } from \"../../../../../common/utils\";\nimport { removeTrace } from \"../../../ObjectBrowser/transferManager\";\n\nexport const download = (\n bucketName: string,\n objectPath: string,\n versionID: any,\n fileSize: number,\n overrideFileName: string | null = null,\n id: string,\n progressCallback: (progress: number) => void,\n completeCallback: () => void,\n errorCallback: (msg: string) => void,\n abortCallback: () => void\n) => {\n const anchor = document.createElement(\"a\");\n document.body.appendChild(anchor);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n\n let path = `${\n window.location.origin\n }${basename}api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}${\n overrideFileName !== null && overrideFileName.trim() !== \"\"\n ? `&override_file_name=${encodeURLString(overrideFileName || \"\")}`\n : \"\"\n }`;\n if (versionID) {\n path = path.concat(`&version_id=${versionID}`);\n }\n\n var req = new XMLHttpRequest();\n req.open(\"GET\", path, true);\n req.addEventListener(\n \"progress\",\n function (evt) {\n let percentComplete = Math.round((evt.loaded / fileSize) * 100);\n\n if (progressCallback) {\n progressCallback(percentComplete);\n }\n },\n false\n );\n\n req.responseType = \"blob\";\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n const rspHeader = req.getResponseHeader(\"Content-Disposition\");\n\n let filename = \"download\";\n if (rspHeader) {\n let rspHeaderDecoded = decodeURIComponent(rspHeader);\n filename = rspHeaderDecoded.split('\"')[1];\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n removeTrace(id);\n\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(req.response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n if (req.getResponseHeader(\"Content-Type\") === \"application/json\") {\n const rspBody: { detailedMessage?: string } = JSON.parse(\n req.response\n );\n if (rspBody.detailedMessage) {\n errorCallback(rspBody.detailedMessage);\n return;\n }\n }\n errorCallback(`Unexpected response status code (${req.status}).`);\n }\n }\n };\n req.onerror = () => {\n if (errorCallback) {\n errorCallback(\"A network error occurred.\");\n }\n };\n req.onabort = () => {\n if (abortCallback) {\n abortCallback();\n }\n };\n\n return req;\n};\n\n// Review file extension by name & returns the type of preview browser that can be used\nexport const extensionPreview = (\n fileName: string\n): \"image\" | \"text\" | \"audio\" | \"video\" | \"none\" => {\n const imageExtensions = [\n \"jif\",\n \"jfif\",\n \"apng\",\n \"avif\",\n \"svg\",\n \"webp\",\n \"bmp\",\n \"ico\",\n \"jpg\",\n \"jpe\",\n \"jpeg\",\n \"gif\",\n \"png\",\n \"heic\",\n ];\n const textExtensions = [\"pdf\", \"txt\", \"json\"];\n const audioExtensions = [\"wav\", \"mp3\", \"alac\", \"aiff\", \"dsd\", \"pcm\"];\n const videoExtensions = [\n \"mp4\",\n \"avi\",\n \"mpg\",\n \"webm\",\n \"mov\",\n \"flv\",\n \"mkv\",\n \"wmv\",\n \"avchd\",\n \"mpeg-4\",\n ];\n\n let fileExtension = fileName.split(\".\").pop();\n\n if (!fileExtension) {\n return \"none\";\n }\n\n fileExtension = fileExtension.toLowerCase();\n\n if (imageExtensions.includes(fileExtension)) {\n return \"image\";\n }\n\n if (textExtensions.includes(fileExtension)) {\n return \"text\";\n }\n\n if (audioExtensions.includes(fileExtension)) {\n return \"audio\";\n }\n\n if (videoExtensions.includes(fileExtension)) {\n return \"video\";\n }\n\n return \"none\";\n};\n\nexport const sortListObjects = (fieldSort: string) => {\n switch (fieldSort) {\n case \"name\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n a.name.localeCompare(b.name);\n case \"last_modified\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n new Date(a.last_modified).getTime() -\n new Date(b.last_modified).getTime();\n case \"size\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n (a.size || -1) - (b.size || -1);\n }\n};\n\nexport const permissionItems = (\n bucketName: string,\n currentPath: string,\n permissionsArray: IAllowResources[]\n): BucketObjectItem[] | null => {\n if (permissionsArray.length === 0) {\n return null;\n }\n\n // We get permissions applied to the current bucket\n const filteredPermissionsForBucket = permissionsArray.filter(\n (permissionItem) =>\n permissionItem.resource.endsWith(`:${bucketName}`) ||\n permissionItem.resource.includes(`:${bucketName}/`)\n );\n\n // No permissions for this bucket. we can throw the error message at this point\n if (filteredPermissionsForBucket.length === 0) {\n return null;\n }\n\n const returnElements: BucketObjectItem[] = [];\n\n // We split current path\n const splitCurrentPath = currentPath.split(\"/\");\n\n filteredPermissionsForBucket.forEach((permissionElement) => {\n // We review paths in resource address\n\n // We split ARN & get the last item to check the URL\n const splitARN = permissionElement.resource.split(\":\");\n const urlARN = splitARN.pop() || \"\";\n\n // We split the paths of the URL & compare against current location to see if there are more items to include. In case current level is a wildcard or is the last one, we omit this validation\n\n const splitURLARN = urlARN.split(\"/\");\n\n // splitURL has more items than bucket name, we can continue validating\n if (splitURLARN.length > 1) {\n splitURLARN.every((currentElementInPath, index) => {\n // It is a wildcard element. We can stor the verification as value should be included (?)\n if (currentElementInPath === \"*\") {\n return false;\n }\n\n // Element is not included in the path. The user is trying to browse something else.\n if (\n splitCurrentPath[index] &&\n splitCurrentPath[index] !== currentElementInPath\n ) {\n return false;\n }\n\n // This element is not included by index in the current paths list. We add it so user can browse into it\n if (!splitCurrentPath[index]) {\n returnElements.push({\n name: `${currentElementInPath}/`,\n size: 0,\n last_modified: new Date(),\n version_id: \"\",\n });\n }\n\n return true;\n });\n }\n\n // We review prefixes in allow resources for StringEquals variant only.\n if (\n permissionElement.conditionOperator === \"StringEquals\" ||\n permissionElement.conditionOperator === \"StringLike\"\n ) {\n permissionElement.prefixes.forEach((prefixItem) => {\n // Prefix Item is not empty?\n if (prefixItem !== \"\") {\n const splitItems = prefixItem.split(\"/\");\n\n let pathToRouteElements: string[] = [];\n\n splitItems.every((splitElement, index) => {\n if (!splitElement.includes(\"*\") && splitElement !== \"\") {\n if (splitElement !== splitCurrentPath[index]) {\n returnElements.push({\n name: `${pathToRouteElements.join(\"/\")}${\n pathToRouteElements.length > 0 ? \"/\" : \"\"\n }${splitElement}/`,\n size: 0,\n last_modified: new Date(),\n version_id: \"\",\n });\n return false;\n }\n if (splitElement !== \"\") {\n pathToRouteElements.push(splitElement);\n }\n\n return true;\n }\n return false;\n });\n }\n });\n }\n });\n\n return returnElements;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { LoginMinIOLogo } from \"../../../../icons\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\n\ninterface IAutoColorIcon {\n marginRight: number;\n marginTop: number;\n}\n\nconst AutoColorIcon = ({ marginRight, marginTop }: IAutoColorIcon) => {\n let tinycolor = require(\"tinycolor2\");\n\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const isDark =\n tinycolor(colorVariants?.backgroundColor || \"#fff\").getBrightness() <= 128;\n\n return (\n \n );\n};\n\nexport default AutoColorIcon;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n

{actionButton}
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } 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, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\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 noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\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 dispatch(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 if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\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 InputAdornment from \"@mui/material/InputAdornment\";\nimport SearchIcon from \"../../../icons/SearchIcon\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\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, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { CopyIcon } from \"../../../icons\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["CreatePathModal","withSuspense","React","withStyles","theme","createStyles","objectBrowserCommon","slashSpacingStyle","margin","classes","bucketName","internalPaths","existingFiles","hidePathButton","additionalOptions","dispatch","useAppDispatch","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","useState","createFolderOpen","setCreateFolderOpen","paths","splitPaths","split","filter","path","lastBreadcrumbsIndex","length","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","Fragment","className","style","cursor","to","onClick","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","breadcrumbsMain","modalOpen","folderName","onClose","Grid","item","xs","breadcrumbs","IconButton","sx","border","backgroundColor","borderLeft","borderRadius","width","height","marginRight","breadcrumbsList","dir","text","id","icon","fill","marginTop","variant","setSnackBarMessage","color","Tooltip","title","disabled","hasPermission","IAM_SCOPES","whiteSpace","label","breadcrumbsSecond","listUploadIcons","uploadPath","forceDisable","uploadFileFunction","uploadFolderFunction","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","tooltip","undefined","event","currentTarget","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","useStyles","makeStyles","detailsList","borderColor","borderWidth","borderStyle","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","closePanel","right","top","children","months","value","days","Array","from","_","num","currentYear","Date","getFullYear","years","numYear","SelectStyled","root","input","borderBottom","fontSize","InputBase","DateSelector","forwardRef","ref","disableOptions","addSwitch","onDateChange","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","month","setMonth","day","setDay","year","setYear","useEffect","valueSplit","parseInt","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","isValid","isDateDisabled","clsx","fieldContainer","fieldContainerBorder","labelContainer","container","InputLabel","htmlFor","inputLabel","tooltipContainer","placement","HelpIcon","FormSwitchWrapper","indicatorLabels","checked","name","onChange","e","target","switchOnly","FormControl","dateInput","Select","displayEmpty","option","dayNumber","fieldBasic","tooltipHelper","flex","display","alignItems","justifyContent","paddingBottom","marginBottom","formFieldStyles","modalStyleUtils","spacingUtils","dateSelector","paddingLeft","closeModalAndRefresh","objectInfo","statusEnabled","setStatusEnabled","type","setType","date","setDate","isDateValid","setIsDateValid","isSaving","setIsSaving","alreadyConfigured","setAlreadyConfigured","retention_mode","toLowerCase","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","ModalWrapper","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","formFieldRow","RadioGroupSelector","currentSelection","selectorOptions","modalButtonBar","selectedObject","versionId","version_id","expireDate","api","expires","mode","then","res","catch","error","setModalErrorSnackMessage","addRetention","disableRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioning","selectedVersion","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","ConfirmDialog","confirmText","isOpen","titleIcon","isLoading","onConfirm","recursive","decodeURLString","endsWith","confirmationContent","DialogContentText","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","propertiesIcon","capitalizeFirst","textTransform","titleItem","detailsPanel","linear","metaData","setMetaData","metadata","invokeMetaDataApi","metaKeys","Object","keys","loadMetaData","useCallback","element","renderItem","isArray","decodeURIComponent","Box","metadataLinear","Table","table","TableBody","TableRow","TableCell","component","scope","align","padding","fontWeight","restProps","Button","startIcon","items","titleLabel","objectActions","actionItem","action","fileName","minHeight","fileNameText","overflow","textOverflow","strings","FileBookIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileImageIcon","FileLockIcon","FileMissingIcon","FileMusicIcon","FilePdfIcon","FilePptIcon","FileTxtIcon","FileVideoIcon","FileXlsIcon","FileZipIcon","extensionToIcon","extensions","displayFileIconName","returnOnlyIcon","elementString","ObjectBrowserIcon","ObjectBrowserFolderIcon","lowercaseElement","etc","ext","indexOf","splitItem","newTileHeader","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","currentItem","pop","tagsFor","plural","cleanObject","verID","SecureComponent","scopes","resource","flexFlow","tagKey","tag","matchAll","errorProps","deleteIcon","onDelete","Chip","size","Close","onDeleteTag","InputBoxWrapper","placeholder","trim","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","url","fetch","method","performInspect","file","volume","urlOfInspectApi","ok","json","resErr","errorMessage","message","detailedError","code","blob","filename","headers","decryptKey","getCookieValue","performDownload","deleteCookie","KeyRevealer","containerForHeader","spacing","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","identityDownload","getTime","Math","random","ID","makeid","downloadCall","download","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","done","percentage","prefix","waitingForFile","failed","cancelled","doDownload","modalFormScrollable","emptyFile","is_latest","last_modified","legal_hold_status","ObjectDetailsTitle","objectNameContainer","headerForSection","buttonsStyles","actionsTray","textStyleUtils","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","allInfoElements","setAllInfoElements","objectToShare","setObjectToShare","versions","setVersions","setDeleteOpen","previewOpen","setPreviewOpen","totalVersionsSize","setTotalVersionsSize","longFileOpen","setLongFileOpen","objectNameArray","infoElement","find","el","result","tVersionSize","reduce","acc","currValue","setLoadingObjectInfo","console","tagKeys","loaderForContainer","textAlign","Loader","objectResources","multiActionButtons","object","getClientOS","includes","downloadObject","is_delete_marker","extensionPreview","ShareFile","dataObject","updateInfo","closeAndReload","setLoadingVersions","setSelectedVersion","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","iconLocation","fullWidth","detailContainer","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","displayParsedDate","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","contentTextAlign","rewindModeColumns","modalBasic","versionID","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","confirmButtonProps","wrapText","bgColor","mainFileVersionItem","intermediateLayer","borderBottomColor","versionContainer","buttonContainer","maxWidth","versionData","ctrItem","content","left","collapsableInfo","flexDirection","versionItem","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","md","CheckboxWrapper","stopPropagation","overrideCheckboxStyles","noTopMargin","button","buttonDisabled","setDeleteLoading","typeConfirm","setTypeConfirm","selectedVersions","selectedObjectsRequest","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","bottom","sortByLabel","hrClass","tableStyles","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","LinearProgress","ScreenTitle","listIcon","titleSpacer","subTitle","bucketDetails","detailsSpacer","actions","SelectWrapper","options","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","HistoryIcon","RefreshIcon","DeleteIcon","DeleteMultipleObjects","RewindEnable","browsePaper","backgroundImage","badgeOverlap","screenTitle","paddingTop","paddingRight","searchField","labelStyle","breadcrumbsContainer","parentWrapper","fullContainer","hideListOnSmall","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","defLoading","Typography","params","useParams","location","useLocation","rewindDate","dateToRewind","bucketToRewind","searchObjects","showDeleted","detailsOpen","objectDetailsOpen","selectedInternalPaths","loading","loadingObjects","simplePath","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","allowResources","session","features","selFeatures","obOnly","records","setRecords","deleteMultipleOpen","setDeleteMultipleOpen","loadingStartTime","setLoadingStartTime","loadingMessage","setLoadingMessage","loadingVersioning","setLoadingVersioning","isVersioned","setIsVersioned","loadingLocking","setLoadingLocking","lockingEnabled","setLockingEnabled","rewindSelect","setRewindSelect","selectedObjects","setSelectedObjects","selectedPreview","setSelectedPreview","sortDirection","setSortDirection","currentSortField","setCurrentSortField","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","downloadRenameModal","setDownloadRenameModal","pathSegment","pathname","fileUpload","folderUpload","setAttribute","quotaVals","setObjectDetailsView","displayDeleteObject","displayListObjects","setBucketDetailsLoad","callback","delay","savedCallback","setInterval","clearInterval","useInterval","timeDelta","now","ceil","updateMessage","is_versioned","object_locking_enabled","decodedIPaths","setSelectedObjectView","setSimplePathHandler","setSearchObjects","setLoadingObjectsList","pathPrefix","decodedPath","currentTimestamp","urlTake","resetRewind","rewindParsed","currDateISO","objects","folders","files","forEach","record","recordsInElement","pathTest","found","pathPrefixChopped","i","parentPath","permitItems","permissionItems","setBucketInfo","handleUploadButton","newFiles","uploadObject","folderPath","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","encodedPath","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","detailedMessage","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","newFolderPath","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","pageTitle","currentPath","sortASC","sortListObjects","payload","reverse","concat","forceRefresh","splitURLS","URLItem","tableActions","idElement","newPath","sendOnlyId","itemsToDownload","filteredItem","fileObject","refresh","PageLayout","creation_date","access","actionsSection","Badge","badgeContent","invisible","multiple","closeMenu","click","tableBlock","borderTop","setShowDeletedObjects","overrideLabelClasses","overrideShowDeleted","TableWrapper","itemActions","columns","entityName","idField","customPaperHeight","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","onSelectAll","rowStyle","delete_flag","parentClassName","configureBucketAllowed","searchBar","SearchBox","setSearchVersions","AutoColorIcon","PageHeader","BackLink","IAM_PAGES","IAM_PERMISSIONS","IAM_ROLES","SettingsIcon","middleComponent","dateInputContainer","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","moment","dateSelected","setDateSelected","hours","minutes","add","calculateNewTime","format","valid","extraInputProps","min","max","noLabelMinWidth","validityLabel","CopyIcon","shareLinkInfo","copyShareLink","copyShareLinkInput","copyShareLinkBtn","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","dateContainer","newDate","PredefinedList","actionButton","setModalSnackMessage","iframeContainer","iframeBase","iframeHidden","isFullscreen","setLoading","basename","document","baseURI","replace","window","origin","objectType","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","allowTransparency","wideLimit","PreviewFileContent","fileSize","overrideFileName","progressCallback","completeCallback","errorCallback","abortCallback","anchor","createElement","body","appendChild","req","evt","percentComplete","round","responseType","onreadystatechange","readyState","rspHeader","getResponseHeader","link","href","URL","createObjectURL","removeChild","rspBody","fileExtension","fieldSort","localeCompare","permissionsArray","filteredPermissionsForBucket","permissionItem","returnElements","splitCurrentPath","permissionElement","splitURLARN","every","currentElementInPath","conditionOperator","prefixes","prefixItem","splitItems","pathToRouteElements","splitElement","tinycolor","require","colorVariants","system","overrideStyles","isDark","getBrightness","WrappedComponent","fallback","ComponentWithSuspense","props","Suspense","predefinedList","multiLine","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","deleteDialogStyles","customDialogSize","snackBarCommon","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","modalSnackBar","customSize","paper","detailedErrorMsg","scroll","reason","titleText","closeContainer","closeButton","disableRipple","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","adornment","adornmentPosition","overrideClass","inputProps","disableUnderline","InputProps","cloneElement","shown","setShown","sm","overlayIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4131.864cf81f.chunk.js b/portal-ui/build/static/js/4131.739594e9.chunk.js similarity index 91% rename from portal-ui/build/static/js/4131.864cf81f.chunk.js rename to portal-ui/build/static/js/4131.739594e9.chunk.js index f3db105d4..e10da7a32 100644 --- a/portal-ui/build/static/js/4131.864cf81f.chunk.js +++ b/portal-ui/build/static/js/4131.739594e9.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4131],{23804:function(e,t,n){n(72791);var i=n(11135),a=n(25787),l=n(61889),r=n(80184);t.Z=(0,a.Z)((function(e){return(0,i.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,i=e.title,a=e.help;return(0,r.jsx)("div",{className:t.root,children:(0,r.jsxs)(l.ZP,{container:!0,children:[(0,r.jsxs)(l.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,i]}),(0,r.jsx)(l.ZP,{item:!0,xs:12,className:t.helpText,children:a})]})})}))},63856:function(e,t,n){var i=n(1413),a=(n(72791),n(75952)),l=n(64554),r=n(61889),o=n(11135),s=n(25787),d=n(27197),c=n(32686),x=n(23814),u=n(80705),p=n(85090),f=n(38734),h=n(80184),m=function(){return(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,h.jsx)(f.Q2V,{})})};t.Z=(0,s.Z)((function(e){return(0,o.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},x.OR),x.bN),{},{schedulerIcon:{opacity:.4,fontSize:10,"& svg":{width:18,height:18}},selectorLabel:{color:"#9D9E9D",fontWeight:"bold",whiteSpace:"nowrap",marginLeft:10,fontSize:12}}))}))((function(e){e.classes;var t=e.timeStart,n=e.setTimeStart,i=e.timeEnd,o=e.setTimeEnd,s=e.triggerSync,x=e.label,f=void 0===x?"Filter:":x,g=e.startLabel,v=void 0===g?"Start Time:":g,j=e.endLabel,b=void 0===j?"End Time:":j;return(0,h.jsx)(r.ZP,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,h.jsxs)(l.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:f}),(0,h.jsxs)(l.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,h.jsxs)(l.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,h.jsx)(d.Z,{className:"min-icon"})}),(0,h.jsx)(l.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:v}),(0,h.jsx)(l.Z,{children:(0,h.jsx)(u.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:m})})]}),(0,h.jsxs)(l.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,h.jsx)(c.Z,{className:"min-icon"})}),(0,h.jsx)(l.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:b}),(0,h.jsx)(l.Z,{children:(0,h.jsx)(u.Z,{value:i,onChange:o,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:m})})]})]}),s&&(0,h.jsx)(l.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end",marginRight:"35px"},children:(0,h.jsx)(a.z,{id:"sync",type:"button",variant:"callAction",onClick:s,icon:(0,h.jsx)(p.Z,{}),label:"Sync"})})]})})}))},80705:function(e,t,n){var i=n(1413),a=n(72791),l=n(27391),r=n(61889),o=n(30829),s=n(20068),d=n(36571),c=n(69783),x=n(98439),u=n(63466),p=n(27197),f=n(11135),h=n(25787),m=n(84570),g=n(23814),v=n(33976),j=n(80184);t.Z=(0,h.Z)((function(e){return(0,f.Z)((0,i.Z)((0,i.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{flexGrow:1},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},g.YI),g.Hr))}))((function(e){var t=e.value,n=e.onChange,f=e.classes,h=e.forSearchBlock,g=void 0!==h&&h,b=e.forFilterContained,y=void 0!==b&&b,Z=e.label,C=e.tooltip,w=void 0===C?"":C,S=e.required,E=e.id,N=e.disabled,T=void 0!==N&&N,I=e.noInputIcon,F=void 0!==I&&I,A=e.classNamePrefix,L=void 0===A?"":A,k=e.openPickerIcon,R={};F||(R={startAdornment:(0,j.jsx)(u.Z,{position:"start",children:(0,j.jsx)(p.Z,{})})}),y&&(R={endAdornment:(0,j.jsx)(u.Z,{position:"end",children:(0,j.jsx)(v.Z,{className:f.openListIcon})})});var B="".concat(L,"date-time-input ").concat(g?f.dateSelectorOverride:""," ").concat(y&&!g?f.dateSelectorFilterOverride:""),W=g?f.parentDateOverride:f.dateSelectorFormOverride,D=(0,j.jsx)(d._,{dateAdapter:c.Z,children:(0,j.jsx)(x.x,{value:t,onChange:n,InputProps:(0,i.Z)((0,i.Z)({},R),{},{className:B}),components:{OpenPickerIcon:k},label:"",className:W,disabled:T,renderInput:function(e){return(0,j.jsx)(l.Z,(0,i.Z)((0,i.Z)({id:E,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:f.paperOverride}})});if(g)return D;var P=y?"":f.fieldContainer;return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(P," ").concat(L,"input-field-container "),children:[""!==Z&&(0,j.jsxs)(o.Z,{htmlFor:E,className:"".concat(f.inputLabel," ").concat(L,"input-label"),children:[(0,j.jsxs)("span",{children:[Z,S?"*":""]}),""!==w&&(0,j.jsx)("div",{className:f.tooltipContainer,children:(0,j.jsx)(s.Z,{title:w,placement:"top-start",children:(0,j.jsx)("div",{className:f.tooltip,children:(0,j.jsx)(m.Z,{})})})})]}),(0,j.jsx)("div",{className:"".concat(f.textBoxContainer," ").concat(L,"input-wrapper "),children:D})]})})}))},56028:function(e,t,n){var i=n(29439),a=n(1413),l=n(72791),r=n(60364),o=n(13400),s=n(55646),d=n(5574),c=n(65661),x=n(39157),u=n(11135),p=n(25787),f=n(23814),h=n(25469),m=n(29823),g=n(28057),v=n(87995),j=n(80184);t.Z=(0,p.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({},f.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))((function(e){var t=e.onClose,n=e.modalOpen,u=e.title,p=e.children,f=e.classes,b=e.wideLimit,y=void 0===b||b,Z=e.noContentPadding,C=e.titleIcon,w=void 0===C?null:C,S=(0,h.TL)(),E=(0,l.useState)(!1),N=(0,i.Z)(E,2),T=N[0],I=N[1],F=(0,r.v9)((function(e){return e.system.modalSnackBar}));(0,l.useEffect)((function(){S((0,v.MK)(""))}),[S]),(0,l.useEffect)((function(){if(F){if(""===F.message)return void I(!1);"error"!==F.type&&I(!0)}}),[F]);var A=y?{classes:{paper:f.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},L="";return F&&(L=F.detailedErrorMsg,(""===F.detailedErrorMsg||F.detailedErrorMsg.length<5)&&(L=F.message)),(0,j.jsxs)(d.Z,(0,a.Z)((0,a.Z)({open:n,classes:f},A),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&t()},className:f.root,children:[(0,j.jsxs)(c.Z,{className:f.title,children:[(0,j.jsxs)("div",{className:f.titleText,children:[w," ",u]}),(0,j.jsx)("div",{className:f.closeContainer,children:(0,j.jsx)(o.Z,{"aria-label":"close",id:"close",className:f.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,j.jsx)(m.Z,{})})})]}),(0,j.jsx)(g.Z,{isModal:!0}),(0,j.jsx)(s.Z,{open:T,className:f.snackBarModal,onClose:function(){I(!1),S((0,v.MK)(""))},message:L,ContentProps:{className:"".concat(f.snackBar," ").concat(F&&"error"===F.type?f.errorSnackBar:"")},autoHideDuration:F&&"error"===F.type?1e4:5e3}),(0,j.jsx)(x.Z,{className:Z?"":f.content,children:p})]}))}))},27454:function(e,t,n){var i=n(1413),a=n(72791),l=n(20068),r=n(80184);t.Z=function(e){var t=e.tooltip,n=e.children,o=e.errorProps,s=void 0===o?null:o;return(0,r.jsx)(l.Z,{title:t,children:(0,r.jsx)("span",{children:s?(0,a.cloneElement)(n,(0,i.Z)({},s)):n})})}},31300:function(e,t,n){n(72791);var i=n(64554),a=n(38734),l=n(80184);t.Z=function(e){var t=e.onlineCount,n=void 0===t?0:t,r=e.offlineCount,o=void 0===r?0:r,s=e.icon,d=void 0===s?null:s,c=e.label,x=void 0===c?"":c,u=e.okStatusText,p=void 0===u?"Online":u,f=e.notOkStatusText,h=void 0===f?"Offline":f;return(0,l.jsx)(i.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,l.jsxs)(i.Z,{sx:{flex:1,display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,l.jsxs)(i.Z,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,l.jsx)(i.Z,{sx:{fontSize:"16px",fontWeight:600},children:x}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:{md:"0px",xs:"10px"},fontSize:{xl:"55px",lg:"50px",md:"45px",xs:"35px"},flexFlow:"row",fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px",marginTop:"8px"},"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},children:[(0,l.jsxs)(i.Z,{children:[(0,l.jsx)(i.Z,{className:"stat-value",children:n}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#4CCB92"}},children:[(0,l.jsx)(a.J$M,{}),(0,l.jsx)("div",{className:"stat-text",children:p})]})]}),(0,l.jsxs)(i.Z,{children:[(0,l.jsx)(i.Z,{className:"stat-value",children:o}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:"#C83B51"}},children:[(0,l.jsx)(a.J$M,{})," ",(0,l.jsx)("div",{className:"stat-text",children:h})]})]})]})]}),(0,l.jsx)(i.Z,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:d})]})})}},879:function(e,t,n){n.d(t,{D_:function(){return r},Et:function(){return a},GJ:function(){return l},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#E7A219"},a=function(e,t){return e<=t/2?i.RED:2!==t&&e===t/2+1?i.YELLOW:e===t?i.GREEN:void 0},l=function(e){switch(e){case"offline":return i.RED;case"online":return i.GREEN;default:return i.YELLOW}},r=function(e,t){return e<=t/2?i.RED:e===t/2+1?i.YELLOW:e===t?i.GREEN:void 0}},24131:function(e,t,n){n.r(t),n.d(t,{default:function(){return Zt}});var i,a=n(29439),l=n(1413),r=n(72791),o=n(26181),s=n.n(o),d=n(93433),c=n(60364),x=n(61889),u=n(11135),p=n(25787),f=n(64554),h=n(23814);!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 m=n(45248),g=n(51846),v=n(82332),j=n(38734),b=n(80184),y=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],Z=function(e){return(0,m.v1)(e,"ns")},C=function(e){return parseInt(e).toString(10)},w=[{id:1,title:"Uptime",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(j.oNq,{}),labelDisplayFunction:m.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:m.ae},{id:51,title:"Usable 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:m.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.areaGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:"#2781B0",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",strokeWidth:3}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.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:m.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(g.Z,{}),labelDisplayFunction:Z},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(v.Z,{}),labelDisplayFunction:Z},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,disableYAxis:!0,xAxisFormatter:m.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.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:m.ae},{id:64,title:"Download",data:"N/A",type:i.singleValue,labelDisplayFunction:m.ae}],title:"Network"}],S=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]},E=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=s()(e,"targets[0].result[0].values",[]);null===a&&(a=[]);var r=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),o=S(a,r),d=t.labelDisplayFunction?t.labelDisplayFunction(o[1]):o[1];return(0,l.Z)((0,l.Z)({},t),{},{data:d})}break;case i.pieChart:if("gauge"===n){var c=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),x=s()(e,"targets",[]).filter((function(e){return null!==e})),u=x.map((function(e){var t=(e.result&&Array.isArray(e.result)?e.result:[]).map((function(t){var n=s()(t,"values",[]),i=Object.keys(t.metric),a=n.sort((function(e,t){return parseInt(e[0][1])-parseInt(t[0][1])})),l=t.metric[i[0]],r=a[a.length-1];return{name:l,value:parseInt(r[1]),legend:e.legendFormat}}));return t})),p=x[0].result&&x[0].result.length>0?x[0].result[0].values:[],f=S(p,c),h=t.labelDisplayFunction?t.labelDisplayFunction(f[1]):f[1];return(0,l.Z)((0,l.Z)({},t),{},{data:u,innerLabel:h})}break;case i.linearGraph:case i.areaGraph:if("graph"===n){var g=s()(e,"targets",[]);null===g&&(g=[]);var v=[],j=[];g.forEach((function(e,t){var n=s()(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=s()(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,m.C5)(e.keyLabel),fillColor:y[t]||(0,m.C5)(e.keyLabel)})})),Z=j.sort((function(e,t){return e.name-t.name}));return(0,l.Z)((0,l.Z)({},t),{},{widgetConfiguration:b,data:Z})}break;case i.barChart:if("bargauge"===n){var C=s()(e,"targets[0].result",[]);null===C&&(C=[]);var w=function(e,t){return e[0]-t[0]},E=[];return E=t.customStructure?t.customStructure.map((function(e){var t=C.find((function(t){var n=Object.keys(t.metric);return t.metric[n[0]]===e.originTag})),n=s()(t,"values",[]).sort(w),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):C.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=s()(e,"values",[]).sort(w),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,l.Z)((0,l.Z)({},t),{},{data:E})}break;case i.singleRep:if("stat"===n){var N=s()(e,"targets[0].result[0].values",[]);null===N&&(N=[]);var T=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),I=S(N,T),F=N.sort((function(e,t){return e[0]-t[0]})),A=[];1===F.length&&A.push({value:0}),F.forEach((function(e){A.push({value:parseInt(e[1])})}));var L=t.labelDisplayFunction?t.labelDisplayFunction(I[1]):I[1];return(0,l.Z)((0,l.Z)({},t),{},{data:A,innerLabel:L})}}return t},N=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,m.nk)(parseFloat(e))),(0,b.jsx)(r.Fragment,{children:t})};return 2!==t.length?n():m.Dl.includes(t[1])?(0,b.jsxs)("span",{className:"commonValue",children:[t[0],(0,b.jsx)("span",{className:"unitText",children:t[1]})]}):n()},T=n(19847),I=n(81207),F=n(72455),A=n(18073),L=n(43896),k=(0,F.Z)({tabRoot:{height:"40px",borderBottom:"1px solid #eaeaea"},root:{width:"120px",backgroundColor:"transparent",paddingTop:0,paddingBottom:0,fontSize:"14px",fontWeight:600,color:"#07193E",height:"40px"},selected:{"&.MuiTab-selected":{backgroundColor:"#F6F7F7 !important"},"&.MuiTab-wrapper":{color:"#07193E",fontWeight:600}},indicator:{background:"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;",height:2},scroller:{maxWidth:1185,position:"relative","&::after":{content:'" "',backgroundColor:"#EEF1F4",height:2,width:"100%",display:"block"}}}),R=function(e){var t=e.selectedTab,n=e.onChange,i=e.tabOptions,a=k();return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(A.Z,{indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",value:t,onChange:function(e,t){n(t)},classes:{root:a.tabRoot,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)}))}))})})},B=n(20601),W=n(38725),D=n(90466),P=n(12891),z=n(24714),M=n(41048),O=n(35667),G=n(95193),U=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,b.jsxs)("div",{className:l.customTooltip,children:[(0,b.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,b.jsxs)("div",{className:l.labelContainer,children:[(0,b.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,b.jsx)("div",{className:l.itemValue,children:(0,b.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),_=n(29598),K=n(72401),V=n(64119),H=n(71080),$=n(25469),Y=function(e){var t=e.panelItem,n=(0,$.TL)();return(0,b.jsx)(f.Z,{sx:{alignItems:"right",gap:"10px","& .link-text":{color:"#2781B0",fontSize:"12px",fontWeight:600},"& .zoom-graph-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:(0,b.jsx)("button",{onClick:function(){n((0,H.xG)(t))},className:"zoom-graph-icon",children:(0,b.jsx)(V.Z,{})})})},J=n(87995),q=n(71715),Q=n(23786),X=n(49900),ee=n(91097),te=function(e){var t=e.title,n=e.componentRef,i=e.data,l=r.useState(null),o=(0,a.Z)(l,2),s=o[0],d=o[1],c=Boolean(s),x=(0,$.TL)(),u=function(){var e;null!==i&&i.length>0?function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}(null!==t?(t+"_"+Date.now().toString()+".csv").replace(/\s+/g,"").trim().toLowerCase():"widgetData_"+Date.now().toString()+".csv",(e=i,[Object.keys(e[0])].concat(e).map((function(e){return Object.values(e).toString()})).join("\n"))):function(e){x((0,J.Ih)(e))}({errorMessage:"Unable to download widget data",detailedError:"Unable to download widget data - data not available"})};return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)(f.Z,{justifyItems:"center",sx:{"& .download-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:[(0,b.jsx)("button",{onClick:function(e){d(e.currentTarget)},className:"download-icon",children:(0,b.jsx)(j._8t,{})}),(0,b.jsxs)(q.Z,{id:"download-widget-main-menu","aria-labelledby":"download-widget-main",anchorEl:s,open:c,onClose:function(){d(null)},children:[(0,b.jsx)(Q.Z,{onClick:function(){u()},children:(0,b.jsx)(X.Z,{children:"Download as CSV"})}),(0,b.jsx)(Q.Z,{onClick:function(){!function(){if(null!==t){var e=(t+"_"+Date.now().toString()+".png").replace(/\s+/g,"").trim().toLowerCase();(0,ee.exportComponentAsPNG)(n,{fileName:e})}else{var i="widgetData_"+Date.now().toString()+".png";(0,ee.exportComponentAsPNG)(n,{fileName:i})}}()},children:(0,b.jsx)(X.Z,{children:"Download as PNG"})})]})]})})},ne=function(e){var t=e.y,n=e.payload;return(0,b.jsx)("text",{width:50,fontSize:"69.7%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:400,dy:3,children:n.value})},ie=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}}))}))((function(e){var t=e.classes,n=e.title,i=e.panelItem,l=e.timeStart,o=e.timeEnd,s=e.propLoading,d=e.apiPrefix,c=e.zoomActivated,u=void 0!==c&&c,p=(0,$.TL)(),f=(0,r.useState)(!0),h=(0,a.Z)(f,2),m=h[0],g=h[1],v=(0,r.useState)([]),j=(0,a.Z)(v,2),y=j[0],Z=j[1],C=(0,r.useState)(null),w=(0,a.Z)(C,2),S=w[0],N=w[1],T=(0,r.useState)(!1),F=(0,a.Z)(T,2),A=F[0],L=F[1],k=(0,r.useRef)();(0,r.useEffect)((function(){s&&g(!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}I.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=E(e,i);Z(t.data),N(t),g(!1)})).catch((function(e){p((0,J.Ih)(e)),g(!1)}))}}),[m,i,o,l,p,d]);var R=S?S.widgetConfiguration:[],V=0,H=0;if(1===R.length){var q=R[0];y.forEach((function(e,t){e[q.dataKey]>H&&(H=e[q.dataKey],V=t)}))}var Q=(0,_.Z)(),X=(0,G.Z)(Q.breakpoints.up("md"));return(0,b.jsxs)("div",{className:u?"":t.singleValueContainer,onMouseOver:function(){L(!0)},onMouseLeave:function(){L(!1)},children:[!u&&(0,b.jsxs)(x.ZP,{container:!0,children:[(0,b.jsx)(x.ZP,{item:!0,xs:10,alignItems:"start",justifyItems:"start",children:(0,b.jsx)("div",{className:t.titleContainer,children:n})}),(0,b.jsx)(x.ZP,{item:!0,xs:1,display:"flex",justifyContent:"flex-end",children:A&&(0,b.jsx)(Y,{panelItem:i})}),(0,b.jsx)(x.ZP,{item:!0,xs:1,display:"flex",justifyContent:"flex-end",children:(0,b.jsx)(te,{title:n,componentRef:k,data:y})})]}),m&&(0,b.jsx)("div",{className:t.loadingAlign,children:(0,b.jsx)(K.Z,{})}),!m&&(0,b.jsx)("div",{ref:k,className:u?t.zoomChartCont:t.contentContainer,children:(0,b.jsx)(B.h,{width:"99%",children:(0,b.jsxs)(W.v,{data:y,layout:"vertical",barCategoryGap:1,children:[(0,b.jsx)(D.K,{type:"number",hide:!0}),(0,b.jsx)(P.B,{dataKey:"name",type:"category",interval:0,tick:(0,b.jsx)(ne,{}),tickLine:!1,axisLine:!1,width:150,hide:!X,style:{fontSize:"12px",fontWeight:100}}),R.map((function(e){return(0,b.jsx)(z.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:u?25:12,children:1===R.length?(0,b.jsx)(r.Fragment,{children:y.map((function(t,n){return(0,b.jsx)(M.b,{fill:n===V?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,b.jsx)(O.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,b.jsx)(U,{barChartConfiguration:R})})]})})})]})})),ae=n(37762),le=n(28265),re=n(82839),oe=n(18602),se=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.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,b.jsxs)("div",{className:r.customTooltip,children:[(0,b.jsx)("div",{className:r.timeStampTitle,children:(0,m.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,b.jsxs)("div",{className:r.labelContainer,children:[(0,b.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,b.jsx)("div",{className:r.itemValue,children:(0,b.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),de=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{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:{width:40,height:40,textAlign:"center",margin:"15px auto"}}))}))((function(e){var t=e.classes,n=e.title,i=e.timeStart,l=e.timeEnd,o=e.propLoading,s=e.panelItem,d=e.apiPrefix,c=e.hideYAxis,u=void 0!==c&&c,p=e.areaWidget,h=void 0!==p&&p,m=e.yAxisFormatter,g=void 0===m?function(e){return e}:m,v=e.xAxisFormatter,j=void 0===v?function(e,t,n){return e}:v,y=e.zoomActivated,Z=void 0!==y&&y,C=(0,$.TL)(),w=(0,r.useState)(!0),S=(0,a.Z)(w,2),N=S[0],T=S[1],F=(0,r.useState)(!1),A=(0,a.Z)(F,2),L=A[0],k=A[1],R=(0,r.useState)([]),W=(0,a.Z)(R,2),z=W[0],M=W[1],U=(0,r.useState)([]),V=(0,a.Z)(U,2),H=V[0],q=V[1],Q=(0,r.useState)(0),X=(0,a.Z)(Q,2),ee=X[0],ne=X[1],ie=(0,r.useState)(null),de=(0,a.Z)(ie,2),ce=de[0],xe=de[1],ue=(0,r.useRef)();(0,r.useEffect)((function(){o&&T(!0)}),[o]),(0,r.useEffect)((function(){if(N){var e=0;if(null!==i&&null!==l){var t=l.unix()-i.unix(),n=Math.floor(t/60);e=n<1?15:n}I.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(s.id,"/?step=").concat(e,"&").concat(null!==i?"&start=".concat(i.unix()):"").concat(null!==i&&null!==l?"&":"").concat(null!==l?"end=".concat(l.unix()):"")).then((function(e){var t=E(e,s);M(t.data),xe(t),T(!1);var n,i=0,a=(0,ae.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,b.jsx)(Ze,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.simpleWidget:var o,s=null;return 80===e.id?s=Se:81===e.id?s=Ee:1===e.id&&(s=Ne),[80,81,1].includes(e.id)&&(o=function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id,l=e.iconWidget;return(0,b.jsx)(s,{valueToRender:t,loading:n,title:i,id:a,iconWidget:l})}),(0,b.jsx)(fe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,iconWidget:e.widgetIcon,renderFn:o});case i.pieChart:return 50===e.id?(0,b.jsx)(he,{children:(0,b.jsx)(Ce,{value:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l})}):(0,b.jsx)(ue,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.linearGraph:case i.areaGraph:return(0,b.jsx)(de,{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,b.jsx)(ie,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,zoomActivated:r});case i.singleRep:var d=e.fillColor?e.fillColor:e.color;return(0,b.jsx)(be,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,color:e.color,fillColor:d,apiPrefix:l});default:return null}},Ie=n(56028),Fe=function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,l=e.apiPrefix,o=(0,$.TL)();return t?(0,b.jsx)(Ie.Z,{title:t.title,onClose:function(){o((0,H.jv)())},modalOpen:n,wideLimit:!1,noContentPadding:!0,children:(0,b.jsx)(r.Fragment,{children:Te(t,i,a,!0,l,!0)})}):null},Ae=n(63856),Le=[{sx:{minWidth:0,display:"grid",gridTemplateColumns:{md:"1fr 1fr 1fr 1fr",sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:66},{componentId:44},{componentId:500},{componentId:501}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{md:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:50},{componentId:502}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{md:"1fr 1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:80},{componentId:81},{componentId:1}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:68},{componentId:52}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:63},{componentId:70}]}],ke=[{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:60}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:71,sx:{flex:1,width:"50%",flexShrink:0}},{componentId:17,sx:{flex:1,width:"50%",flexShrink:0}}]},{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:73}]}],Re=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:76},{componentId:77}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:82},{componentId:74}]}],Be=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:11},{componentId:8}]}],We=function(e){var t=e.children;return(0,b.jsx)(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},children:t})},De=n(57621),Pe=n(9585),ze=n(43504),Me=(0,F.Z)({root:{backgroundColor:"#fff",padding:0},title:(0,l.Z)({},h.NP.titleContainer),content:{maxWidth:"100%"}}),Oe=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{cardRoot:(0,l.Z)((0,l.Z)({},h.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,d=void 0!==s&&s,c=e.classes,x=Me(),u=function(){return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)("div",{className:c.subHearderContainer,children:[(0,b.jsxs)("div",{className:c.leftSide,children:[(0,b.jsx)("div",{children:(0,b.jsxs)("span",{className:c.metricText,children:[n,(0,b.jsx)("span",{className:c.unitText,children:i})]})}),a&&(0,b.jsx)("div",{className:"".concat(c.subMessage," ").concat(a.fontWeight?a.fontWeight:""),children:a.message})]}),(0,b.jsx)("div",{className:c.rightSide,children:o})]})})},p=function(){return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)("div",{className:c.headerContainer,children:[(0,b.jsx)("span",{className:c.title,children:t}),l&&(0,b.jsx)(r.Fragment,{children:(0,b.jsx)("span",{className:c.viewAll,children:(0,b.jsx)(ze.rU,{to:l,children:"View All"})})})]})})};return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(De.Z,{className:"".concat(c.cardRoot," ").concat(d?c.extraMargin:""),children:""!==n&&(0,b.jsx)(Pe.Z,{title:(0,b.jsx)(p,{}),subheader:(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(u,{})}),classes:{root:x.root,title:x.title,content:x.content}})})})})),Ge=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(Oe,{title:t,metricValue:n,rightComponent:i})})},Ue=function(e){var t=e.panelItem,n=e.timeStart,i=e.timeEnd,l=e.propLoading,o=e.apiPrefix,s=e.statLabel,d=(0,$.TL)(),c=(0,r.useState)(!0),x=(0,a.Z)(c,2),u=x[0],p=x[1],h=(0,r.useState)(""),m=(0,a.Z)(h,2),g=m[0],v=m[1];return(0,r.useEffect)((function(){l&&p(!0)}),[l]),(0,r.useEffect)((function(){if(u){var e=0;if(null!==n&&null!==i){var a=i.unix()-n.unix(),l=Math.floor(a/60);e=l<1?15:l}I.Z.invoke("GET","/api/v1/".concat(o,"/info/widgets/").concat(t.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.unix()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.unix()):"")).then((function(e){var n=E(e,t);v(n.data),p(!1)})).catch((function(e){d((0,J.Ih)(e)),p(!1)}))}}),[u,t,i,n,d,o]),u?(0,b.jsx)(f.Z,{sx:{width:"100%",paddingTop:"5px",textAlign:"center",margin:"auto"},children:(0,b.jsx)(K.Z,{style:{width:12,height:12}})}):(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{className:"stat-value",children:g}),s]})},_e=function(e){var t=e.statItemLeft,n=void 0===t?null:t,i=e.statItemRight,a=void 0===i?null:i,l=e.icon,r=void 0===l?null:l,o=e.label,s=void 0===o?"":o;return(0,b.jsx)(f.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:s}),(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:{md:"0px",xs:"10px"},fontSize:{xl:"55px",lg:"50px",md:"45px",xs:"35px"},flexFlow:"row",fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px",marginTop:"8px"},"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},children:[n,a]})]}),(0,b.jsx)(f.Z,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:r})]})})},Ke=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.id,c=(0,a.Z)(s,2),x=c[0],u=c[1],p=(0,b.jsx)(Ue,{panelItem:x,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,statLabel:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#4CCB92"}},children:[(0,b.jsx)(j.J$M,{}),(0,b.jsx)("div",{className:"stat-text",children:"Online"})]})}),h=(0,b.jsx)(Ue,{panelItem:u,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,statLabel:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#C83B51"}},children:[(0,b.jsx)(j.J$M,{}),(0,b.jsx)("div",{className:"stat-text",children:"Offline"})]})}),m=null,g="";return 500===d?(m=(0,b.jsx)(j.SBZ,{}),g="Servers"):501===d&&(m=(0,b.jsx)(j.FU8,{}),g="Drives"),(0,b.jsx)(_e,{statItemLeft:p,statItemRight:h,icon:m,label:g})},Ve=function(e){var t=e.value,n=e.loading;return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"10px",gap:"10px","& .min-icon":{height:"15px",width:"15px",fill:"#4ccb92"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"18px",color:"#696969"},children:"GET"}),n?(0,b.jsx)(K.Z,{style:{width:"15px",height:"15px"}}):(0,b.jsx)(j.vUj,{})]}),(0,b.jsx)(f.Z,{sx:{fontSize:"50px",fontFamily:"Lato",fontWeight:600},children:t})]})},He=function(e){var t=e.value,n=e.loading;return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",gap:"10px",alignItems:"center",marginTop:"10px","& .min-icon":{height:"15px",width:"15px",fill:"#2781b0"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"18px",color:"#696969",fontWeight:"normal"},children:"PUT"}),n?(0,b.jsx)(K.Z,{style:{width:"15px",height:"15px"}}):(0,b.jsx)(j.Uxq,{})]}),(0,b.jsx)(f.Z,{sx:{fontSize:"50px",fontFamily:"Lato",fontWeight:600},children:t})]})},$e=function(e){var t=e.value,n=e.timeStart,i=e.timeEnd,l=e.propLoading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=(0,a.Z)(s,2),c=d[0],x=d[1],u=(0,b.jsx)(Ze,{title:t.title,panelItem:c,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,b.jsx)(He,{value:t,loading:n,title:i,id:a})}}),p=(0,b.jsx)(Ze,{title:t.title,panelItem:x,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,b.jsx)(Ve,{value:t,loading:n,title:i,id:a})}});return(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"},gap:"15px","& .unitText":{fontSize:"14px",color:"#5E5E5E",marginLeft:"5px"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:"Network"}),(0,b.jsx)(f.Z,{sx:{position:"relative",width:110,height:110,marginLeft:{sm:"auto",xs:""}},children:(0,b.jsx)(f.Z,{sx:{position:"absolute",display:"flex",flexFlow:"column",alignItems:"center",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:p})}),(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center",marginLeft:{sm:"auto",xs:""}},children:(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center","& .value":{fontSize:"50px",fontFamily:"Lato"},"& .unit":{color:"#5E5E5E",fontSize:"18px",marginLeft:"12px",marginTop:"10px"}},children:u})}),(0,b.jsx)(f.Z,{sx:{marginLeft:"15px",height:"100%",display:"flex",alignItems:"flex-start","& .min-icon":{height:"15px",width:"15px"}},children:(0,b.jsx)(j.QBB,{})})]})},Ye=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.title,c=void 0===d?"":d,x=t.id,u=(0,a.Z)(s,2),p=u[0],f=u[1];return[500,501].includes(x)?(0,b.jsx)(he,{children:(0,b.jsx)(Ke,{info:t,timeStart:n,timeEnd:i,loading:l,apiPrefix:r})}):502===x?(0,b.jsx)(he,{children:(0,b.jsx)($e,{apiPrefix:r,timeEnd:i,timeStart:n,value:t,propLoading:l})}):(0,b.jsx)(Ge,{title:c,leftComponent:Te(p,n,i,l,r),rightComponent:Te(f,n,i,l,r)})},Je=n(74794),qe=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)((0,l.Z)({},h.OR),h.bN),{},{dashboardRow:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap"}}))}))((function(e){var t=e.apiPrefix,n=void 0===t?"admin":t,i=(0,$.TL)(),l=(0,c.v9)((function(e){return e.dashboard.zoom.openZoom})),o=(0,c.v9)((function(e){return e.dashboard.zoom.widgetRender})),s=(0,r.useState)(null),u=(0,a.Z)(s,2),p=u[0],h=u[1],m=(0,r.useState)(null),g=(0,a.Z)(m,2),v=g[0],j=g[1],y=(0,r.useState)(!0),Z=(0,a.Z)(y,2),C=Z[0],S=Z[1],N=(0,r.useState)(w),F=(0,a.Z)(N,2),A=F[0],L=F[1],k=(0,r.useState)(0),B=(0,a.Z)(k,2),W=B[0],D=B[1],P=(0,r.useCallback)((function(){var e=0;if(null!==p&&null!==v){var t=v.unix()-p.unix(),a=Math.floor(t/60);e=a<1?15:a}I.Z.invoke("GET","/api/v1/".concat(n,"/info?step=").concat(e,"&").concat(null!==p?"&start=".concat(p.unix()):"").concat(null!==p&&null!==v?"&":"").concat(null!==v?"end=".concat(v.unix()):"")).then((function(e){if(e.widgets){var t=(n=e.widgets,w.map((function(e){var t=n.find((function(t){return t.title.toLowerCase().trim()===e.title.toLowerCase().trim()}));return E(t,e)})));L(t)}else i((0,J.Ih)({errorMessage:"Widget information could not be retrieved at this time. Please try again",detailedError:""}));var n;S(!1)})).catch((function(e){i((0,J.Ih)(e)),S(!1)}))}),[p,v,i,n]);(0,r.useEffect)((function(){C&&P()}),[C,P]);var z=function(e){return e.reduce((function(e,t,i){var a=t.columns,o=(void 0===a?[]:a).map((function(e,t){var a;return function(e,t){return(0,b.jsx)(r.Fragment,{children:e?(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(f.Z,{children:e.mergedPanels?(0,b.jsx)(Ye,{info:e,timeStart:p,timeEnd:v,loading:C,apiPrefix:n}):Te(e,p,v,C,n,l)})}):null},"widget-".concat(t))}((a=e.componentId,A.find((function(e){return e.id===a}))),"".concat(i,"-").concat(t))})),s=(0,b.jsx)(f.Z,{sx:t.sx,children:o},"layout-row-".concat(i));return[].concat((0,d.Z)(e),[s])}),[])};return(0,b.jsxs)(Je.Z,{children:[l&&(0,b.jsx)(Fe,{modalOpen:l,timeStart:p,timeEnd:v,widgetRender:0,value:o,apiPrefix:n}),(0,b.jsx)(x.ZP,{item:!0,xs:12,children:(0,b.jsx)(R,{selectedTab:W,onChange:function(e){D(e)},tabOptions:[{label:"Usage"},{label:"Traffic"},{label:"Resources"}]})}),(0,b.jsxs)(x.ZP,{item:!0,xs:12,sx:{paddingTop:"20px"},children:[(0,b.jsx)(f.Z,{sx:{marginBottom:"20px"},children:(0,b.jsx)(Ae.Z,{timeStart:p,setTimeStart:h,timeEnd:v,setTimeEnd:j,triggerSync:function(){S(!0)}})}),(0,b.jsx)(T.x,{index:0,value:W,children:(0,b.jsx)(We,{children:A.length?z(Le):null})}),(0,b.jsx)(T.x,{index:1,value:W,children:(0,b.jsx)(We,{children:A.length?z(ke):null})}),(0,b.jsx)(T.x,{index:2,value:W,children:(0,b.jsxs)(We,{children:[A.length?z(Re):null,(0,b.jsx)("h2",{style:{margin:0,borderBottom:"1px solid #dedede"},children:"Advanced"}),A.length?z(Be):null]})})]})]})})),Qe=n(32291),Xe=n(40986),et=n(23804),tt=n(31300),nt=n(98444),it=n.n(nt),at=n(79834),lt=n(90493),rt=n(76278),ot=n(56125),st=n(879),dt=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;return(0,b.jsx)(f.Z,{sx:{alignItems:"baseline",padding:"5px",display:"flex",gap:"5px"},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column","& .stat-text":{color:"#5E5E5E",fontSize:"12px"},"& .stat-value":{fontSize:"18px",color:"#07193E",display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:[(0,b.jsxs)("div",{className:"stat-value",children:[a," ",(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column",marginLeft:"5px",maxWidth:"40px","&:first-of-type(svg)":{fill:"#848484"}},children:s?(0,b.jsx)(f.Z,{sx:{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{fill:r,width:"10px",height:"10px"}},children:(0,b.jsx)(j.J$M,{})}):(0,b.jsx)(f.Z,{sx:{width:"12px",height:"12px"}})})]}),(0,b.jsx)("div",{className:"stat-text",children:n})]})})},ct=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.SJ))}))((function(e){var t=e.server,n=Object.keys(s()(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,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:{sm:"row",xs:"column"}},children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center"},children:[(0,b.jsx)(f.Z,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""}),(null===t||void 0===t?void 0:t.state)&&(0,b.jsx)(f.Z,{sx:{marginLeft:"8px","& .min-icon":{fill:(0,st.GJ)(t.state),height:"14px",width:"14px"}},children:(0,b.jsx)(j.J$M,{})})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flex:"1.5",gap:{md:"5%",xs:"5%"}},children:[(0,b.jsx)(dt,{statusColor:(0,st.Et)(r,a),label:"Drives",hasStatus:!0,value:"".concat(r,"/").concat(a)}),(0,b.jsx)(dt,{statusColor:(0,st.D_)(l,i),label:"Network",hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,b.jsx)(dt,{statusColor:"green",label:"Up time",value:null!==t&&void 0!==t&&t.uptime?(0,m.v1)(t.uptime):"N/A"})]}),(0,b.jsx)(dt,{statusColor:"green",label:"",value:(0,b.jsxs)(f.Z,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"2px",fontSize:"12px",marginTop:"5px","& .label":{fontWeight:600,marginRight:"3px"}},children:[(0,b.jsx)("span",{className:"label",children:"Version:"}),t.version?t.version:"N/A"]})})]})})})),xt=function(e){switch(e){case"offline":return st.yh.RED;case"ok":return st.yh.GREEN;default:return st.yh.YELLOW}},ut=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.SJ))}))((function(e){var t=e.drive,n=t.totalSpace||0,i=t.usedSpace||0,a=[{value:n-i,color:"#D6D6D6",label:"Free Space"},{value:t.usedSpace,color:(0,m.hn)(i,n),label:"Used Space"}];return(0,b.jsx)(f.Z,{sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",padding:"20px",border:"1px solid #eaeaea"},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,b.jsxs)(f.Z,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:xt(t.state),flexShrink:0},"& .drive-endpoint":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",marginRight:"8px",fontWeight:600,fontSize:{md:"16px",xs:"10px"}}},children:[(0,b.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""}),t.state&&(0,b.jsx)(j.J$M,{})]}),(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",alignItems:"center",paddingLeft:"20px",marginTop:"10px",flexFlow:{sm:"row",xs:"column"},"& .info-label":{color:"#5E5E5E",fontSize:"12px",textAlign:"center"},"& .info-value":{fontSize:"18px",color:"#07193E",display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:[(0,b.jsx)(f.Z,{sx:{flex:1},children:(0,b.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,b.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:t.usedSpace?(0,m.l5)(t.usedSpace):"-"}),(0,b.jsx)("div",{children:(0,b.jsx)(ce.u,{width:110,height:110,children:(0,b.jsx)(xe.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,b.jsx)(M.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})]})}),(0,b.jsxs)(f.Z,{sx:{display:"flex",gap:"5%",alignItems:"center",flex:2,flexGrow:1},children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.totalSpace?t.totalSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Capacity"})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.usedSpace?t.usedSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Used"})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.availableSpace?t.availableSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Available"})]})]})]})]})})})),pt=n(25183),ft=function(e){var t=e.data,n=r.useState(t.length>1?"":t[0].endpoint+"-0"),i=(0,a.Z)(n,2),l=i[0],o=i[1],s=function(e){o(e)};return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{marginBottom:"10px"},children:["Servers (",t.length,")"]}),(0,b.jsx)(lt.Z,{sx:{width:"100%",flex:1,padding:"0"},component:"nav","aria-labelledby":"nested-list-subheader",children:t.map((function(e,t){var n="".concat(e.endpoint,"-").concat(t),i=l===n;return(0,b.jsxs)(r.Fragment,{children:[(0,b.jsxs)(rt.Z,{disableRipple:!0,onClick:function(){s(i?"":n)},className:i?"expanded":"",sx:{display:"flex",alignItems:"center",justifyContent:"space-between",border:"1px solid #f1f1f1",padding:"3px 10px 3px 10px","&:hover":{background:"#bebbbb0d"}},children:[(0,b.jsx)(ct,{server:e,index:t}),(0,b.jsx)(f.Z,{sx:{height:"25px",width:"25px",background:"#FBFAFA",borderRadius:"2px","&:hover":{background:"#fafafa"},display:{md:"block",xs:"none"},"& .collapse-icon":{fill:"#494949","& g rect":{fill:"#ffffff"}},"& .expand-icon":{fill:"#494949","& rect":{fill:"#ffffff"}}},children:i?(0,b.jsx)(pt.cg,{className:"collapse-icon"}):(0,b.jsx)(pt.Ud,{className:"expand-icon"})})]}),i?(0,b.jsxs)(f.Z,{sx:{border:"1px solid #f1f1f1",borderTop:"0"},children:[(0,b.jsxs)(at.Z,{component:"div",sx:{paddingLeft:"30px"},children:["Drives (",e.drives.length,")"]},"".concat(t,"-drive-details")),(0,b.jsx)(ot.Z,{in:i,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",flex:1,display:"flex",padding:{md:"15px 30px",xs:"10px 10px"},"& .MuiCollapse-wrapperInner":{display:"flex",flexFlow:"column",gap:"15px"}},children:e.drives.map((function(e,t){return(0,b.jsx)(ut,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},"".concat(e.endpoint,"-").concat(t)):null]},n)}))})]})},ht=function(e){var t=e.counterValue,n=e.label,i=void 0===n?"":n,a=e.icon,l=void 0===a?null:a,r=e.actions,o=void 0===r?null:r;e.loading;return(0,b.jsx)(f.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"},children:(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",width:"100%",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"},position:"absolute"},children:[(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"8px",zIndex:10,overflow:"hidden"},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:i}),(0,b.jsx)(me.Z,{title:t,placement:"bottom",enterDelay:500,children:(0,b.jsx)(f.Z,{sx:{fontSize:{xl:"55px",lg:"50px",md:"36px",sm:"35px",xs:"35px"},fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:{md:187,xs:200},flexFlow:{md:"row",xs:"column"}},children:t})})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"flex-start",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:[l,(0,b.jsx)(f.Z,{children:o})]})]})})},mt=function(e){var t=e.usageValue,n=e.total,i=e.unit,a=[{value:n,color:"#D6D6D6",label:"Free Space"},{value:t,color:"#073052",label:"Used Space"}];return(0,b.jsxs)(f.Z,{sx:{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"space-between",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,b.jsxs)(f.Z,{children:[(0,b.jsx)("div",{className:"usage-label",children:(0,b.jsx)("span",{children:"Reported Usage"})}),(0,b.jsx)(me.Z,{title:"".concat(t," Bytes"),children:(0,b.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,b.jsx)("label",{className:"unit-type",children:i})]}),(0,b.jsx)(f.Z,{children:(0,b.jsx)(f.Z,{sx:{flex:1},children:(0,b.jsx)("div",{style:{position:"relative",width:105,height:105,top:"-8px"},children:(0,b.jsx)("div",{children:(0,b.jsx)(ce.u,{width:105,height:105,children:(0,b.jsx)(xe.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:45,innerRadius:35,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,b.jsx)(M.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})})})})]})},gt=n(75952),vt=n(56087),jt=n(27454),bt=function(e){var t=e.children;return(0,b.jsx)(f.Z,{sx:{border:"1px solid #f1f1f1",padding:{md:"15px",xs:"5px"},height:"136px",maxWidth:{sm:"100%"}},children:t})},yt=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,m.Am)(e)}(n),a=t||{},l=a.lastScan,o=void 0===l?"n/a":l,s=a.lastHeal,c=void 0===s?"n/a":s,x=a.upTime,u=void 0===x?"n/a":x,p=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),h=[];p.forEach((function(e){var t=e.drives.map((function(e){return e}));h=[].concat((0,d.Z)(h),(0,d.Z)(t))}));var g=it()(p,"state"),v=g.offline,y=void 0===v?[]:v,Z=g.online,C=void 0===Z?[]:Z,w=it()(h,"state"),S=w.offline,E=void 0===S?[]:S,N=w.ok,T=void 0===N?[]:N;return(0,b.jsx)(f.Z,{sx:{maxWidth:"1536px",margin:"auto"},children:(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:"27px",marginBottom:"40px",marginTop:"40px",marginLeft:"40px",marginRight:"40px"},children:[(0,b.jsxs)(f.Z,{children:[(null===t||void 0===t?void 0:t.prometheusNotReady)&&(0,b.jsx)(et.Z,{iconComponent:(0,b.jsx)(j.a$2,{}),title:"We can't retrieve advanced metrics at this time",help:(0,b.jsxs)(r.Fragment,{children:["MinIO Dashboard will display basic metrics as we couldn't connect to Prometheus successfully.",(0,b.jsx)("br",{})," ",(0,b.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,b.jsx)(et.Z,{iconComponent:(0,b.jsx)(j.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.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,b.jsx)(f.Z,{sx:{paddingTop:"20px",fontSize:"14px","& a":{color:function(e){return e.colors.link}}},children:(0,b.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html",target:"_blank",rel:"noreferrer",children:"Read more about Prometheus on our Docs site."})})]})})]}),(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateRows:"136px",gridTemplateColumns:{sm:"1fr 1fr 1fr",xs:"1fr"},gap:{md:"20px",xs:"20px"}},children:[(0,b.jsx)(bt,{children:(0,b.jsx)(ht,{label:"Buckets",icon:(0,b.jsx)(j.wNb,{}),counterValue:t?(0,m.nk)(t.buckets):0,actions:(0,b.jsx)(ze.rU,{to:vt.gA.BUCKETS,style:{zIndex:999,textDecoration:"none",top:"40px",position:"relative",marginRight:"75px"},children:(0,b.jsx)(jt.Z,{tooltip:"Browse",children:(0,b.jsx)(gt.z,{id:"browse-dashboard",onClick:function(){},label:"Browse",icon:(0,b.jsx)(j.LZ3,{}),variant:"regular",style:{padding:5,height:30,fontSize:14}})})})})}),(0,b.jsx)(bt,{children:(0,b.jsx)(ht,{label:"Objects",icon:(0,b.jsx)(j.xpX,{}),counterValue:t?(0,m.nk)(t.objects):0})}),(0,b.jsx)(bt,{children:(0,b.jsx)(tt.Z,{onlineCount:C.length,offlineCount:y.length,label:"Servers",icon:(0,b.jsx)(j.SBZ,{})})}),(0,b.jsx)(bt,{children:(0,b.jsx)(tt.Z,{offlineCount:E.length,onlineCount:T.length,label:"Drives",icon:(0,b.jsx)(j.FU8,{})})}),(0,b.jsxs)(f.Z,{sx:{gridRowStart:"1",gridRowEnd:"3",gridColumnStart:"3",border:"1px solid #f1f1f1",padding:"15px",display:"grid",justifyContent:"stretch"},children:[(0,b.jsx)(mt,{usageValue:n,total:i.total,unit:i.unit}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",gap:"14px"},children:[(0,b.jsx)(we,{icon:(0,b.jsx)(j.lnI,{}),label:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{sx:{display:{md:"inline",xs:"none"}},children:"Time since last"})," ","Heal Activity"]}),value:c}),(0,b.jsx)(we,{icon:(0,b.jsx)(pt.EY,{}),label:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{sx:{display:{md:"inline",xs:"none"}},children:"Time since last"})," ","Scan Activity"]}),value:o}),(0,b.jsx)(we,{icon:(0,b.jsx)(j.oNq,{}),label:"Uptime",value:u})]})]})]}),(0,b.jsx)(f.Z,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,b.jsx)(ft,{data:p})})]})]})})},Zt=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},(0,h.Bz)(e.spacing(4))))}))((function(e){var t=e.classes,n=(0,$.TL)(),i=(0,r.useState)(!0),l=(0,a.Z)(i,2),o=l[0],d=l[1],c=(0,r.useState)(null),u=(0,a.Z)(c,2),p=u[0],f=u[1],h=(0,r.useCallback)((function(){I.Z.invoke("GET","/api/v1/admin/info").then((function(e){f(e),d(!1)})).catch((function(e){n((0,J.Ih)(e)),d(!1)}))}),[f,d,n]);(0,r.useEffect)((function(){o&&h()}),[o,h]);var m=s()(p,"widgets",null);return(0,b.jsxs)(r.Fragment,{children:[(0,b.jsx)(Qe.Z,{label:"Metrics"}),o?(0,b.jsx)(x.ZP,{container:!0,children:(0,b.jsx)(x.ZP,{item:!0,xs:12,className:t.container,children:(0,b.jsx)(Xe.Z,{})})}):(0,b.jsx)(r.Fragment,{children:null!==m?(0,b.jsx)(qe,{}):(0,b.jsx)(yt,{usage:p})})]})}))},19847:function(e,t,n){n.d(t,{x:function(){return s}});var i=n(1413),a=n(45987),l=n(72791),r=n(80184),o=["children","value","index"],s=function(e){var t=e.children,n=e.value,s=e.index,d=(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"}},d),{},{children:n===s&&(0,r.jsx)(l.Fragment,{children:t})}))}}}]); -//# sourceMappingURL=4131.864cf81f.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4131],{23804:function(e,t,n){n(72791);var i=n(11135),a=n(25787),l=n(61889),r=n(80184);t.Z=(0,a.Z)((function(e){return(0,i.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,i=e.title,a=e.help;return(0,r.jsx)("div",{className:t.root,children:(0,r.jsxs)(l.ZP,{container:!0,children:[(0,r.jsxs)(l.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,i]}),(0,r.jsx)(l.ZP,{item:!0,xs:12,className:t.helpText,children:a})]})})}))},63856:function(e,t,n){var i=n(1413),a=(n(72791),n(75952)),l=n(64554),r=n(61889),o=n(11135),s=n(25787),d=n(27197),c=n(32686),x=n(23814),u=n(80705),p=n(85090),f=n(38734),h=n(80184),m=function(){return(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,h.jsx)(f.Q2V,{})})};t.Z=(0,s.Z)((function(e){return(0,o.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},x.OR),x.bN),{},{schedulerIcon:{opacity:.4,fontSize:10,"& svg":{width:18,height:18}},selectorLabel:{color:"#9D9E9D",fontWeight:"bold",whiteSpace:"nowrap",marginLeft:10,fontSize:12}}))}))((function(e){e.classes;var t=e.timeStart,n=e.setTimeStart,i=e.timeEnd,o=e.setTimeEnd,s=e.triggerSync,x=e.label,f=void 0===x?"Filter:":x,g=e.startLabel,v=void 0===g?"Start Time:":g,j=e.endLabel,b=void 0===j?"End Time:":j;return(0,h.jsx)(r.ZP,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,h.jsxs)(l.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:f}),(0,h.jsxs)(l.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,h.jsxs)(l.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,h.jsx)(d.Z,{className:"min-icon"})}),(0,h.jsx)(l.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:v}),(0,h.jsx)(l.Z,{children:(0,h.jsx)(u.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:m})})]}),(0,h.jsxs)(l.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,h.jsx)(l.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,h.jsx)(c.Z,{className:"min-icon"})}),(0,h.jsx)(l.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:b}),(0,h.jsx)(l.Z,{children:(0,h.jsx)(u.Z,{value:i,onChange:o,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:m})})]})]}),s&&(0,h.jsx)(l.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end",marginRight:"35px"},children:(0,h.jsx)(a.z,{id:"sync",type:"button",variant:"callAction",onClick:s,icon:(0,h.jsx)(p.Z,{}),label:"Sync"})})]})})}))},80705:function(e,t,n){var i=n(1413),a=n(72791),l=n(27391),r=n(61889),o=n(30829),s=n(20068),d=n(36571),c=n(69783),x=n(98439),u=n(63466),p=n(27197),f=n(11135),h=n(25787),m=n(84570),g=n(23814),v=n(33976),j=n(80184);t.Z=(0,h.Z)((function(e){return(0,f.Z)((0,i.Z)((0,i.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{flexGrow:1},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},g.YI),g.Hr))}))((function(e){var t=e.value,n=e.onChange,f=e.classes,h=e.forSearchBlock,g=void 0!==h&&h,b=e.forFilterContained,y=void 0!==b&&b,Z=e.label,C=e.tooltip,w=void 0===C?"":C,S=e.required,E=e.id,N=e.disabled,T=void 0!==N&&N,I=e.noInputIcon,F=void 0!==I&&I,A=e.classNamePrefix,L=void 0===A?"":A,k=e.openPickerIcon,R={};F||(R={startAdornment:(0,j.jsx)(u.Z,{position:"start",children:(0,j.jsx)(p.Z,{})})}),y&&(R={endAdornment:(0,j.jsx)(u.Z,{position:"end",children:(0,j.jsx)(v.Z,{className:f.openListIcon})})});var B="".concat(L,"date-time-input ").concat(g?f.dateSelectorOverride:""," ").concat(y&&!g?f.dateSelectorFilterOverride:""),W=g?f.parentDateOverride:f.dateSelectorFormOverride,D=(0,j.jsx)(d._,{dateAdapter:c.Z,children:(0,j.jsx)(x.x,{value:t,onChange:n,InputProps:(0,i.Z)((0,i.Z)({},R),{},{className:B}),components:{OpenPickerIcon:k},label:"",className:W,disabled:T,renderInput:function(e){return(0,j.jsx)(l.Z,(0,i.Z)((0,i.Z)({id:E,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:f.paperOverride}})});if(g)return D;var P=y?"":f.fieldContainer;return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(P," ").concat(L,"input-field-container "),children:[""!==Z&&(0,j.jsxs)(o.Z,{htmlFor:E,className:"".concat(f.inputLabel," ").concat(L,"input-label"),children:[(0,j.jsxs)("span",{children:[Z,S?"*":""]}),""!==w&&(0,j.jsx)("div",{className:f.tooltipContainer,children:(0,j.jsx)(s.Z,{title:w,placement:"top-start",children:(0,j.jsx)("div",{className:f.tooltip,children:(0,j.jsx)(m.Z,{})})})})]}),(0,j.jsx)("div",{className:"".concat(f.textBoxContainer," ").concat(L,"input-wrapper "),children:D})]})})}))},56028:function(e,t,n){var i=n(29439),a=n(1413),l=n(72791),r=n(60364),o=n(13400),s=n(55646),d=n(5574),c=n(65661),x=n(39157),u=n(11135),p=n(25787),f=n(23814),h=n(25469),m=n(29823),g=n(28057),v=n(87995),j=n(80184);t.Z=(0,p.Z)((function(e){return(0,u.Z)((0,a.Z)((0,a.Z)({},f.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))((function(e){var t=e.onClose,n=e.modalOpen,u=e.title,p=e.children,f=e.classes,b=e.wideLimit,y=void 0===b||b,Z=e.noContentPadding,C=e.titleIcon,w=void 0===C?null:C,S=(0,h.TL)(),E=(0,l.useState)(!1),N=(0,i.Z)(E,2),T=N[0],I=N[1],F=(0,r.v9)((function(e){return e.system.modalSnackBar}));(0,l.useEffect)((function(){S((0,v.MK)(""))}),[S]),(0,l.useEffect)((function(){if(F){if(""===F.message)return void I(!1);"error"!==F.type&&I(!0)}}),[F]);var A=y?{classes:{paper:f.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},L="";return F&&(L=F.detailedErrorMsg,(""===F.detailedErrorMsg||F.detailedErrorMsg.length<5)&&(L=F.message)),(0,j.jsxs)(d.Z,(0,a.Z)((0,a.Z)({open:n,classes:f},A),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&t()},className:f.root,children:[(0,j.jsxs)(c.Z,{className:f.title,children:[(0,j.jsxs)("div",{className:f.titleText,children:[w," ",u]}),(0,j.jsx)("div",{className:f.closeContainer,children:(0,j.jsx)(o.Z,{"aria-label":"close",id:"close",className:f.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,j.jsx)(m.Z,{})})})]}),(0,j.jsx)(g.Z,{isModal:!0}),(0,j.jsx)(s.Z,{open:T,className:f.snackBarModal,onClose:function(){I(!1),S((0,v.MK)(""))},message:L,ContentProps:{className:"".concat(f.snackBar," ").concat(F&&"error"===F.type?f.errorSnackBar:"")},autoHideDuration:F&&"error"===F.type?1e4:5e3}),(0,j.jsx)(x.Z,{className:Z?"":f.content,children:p})]}))}))},27454:function(e,t,n){var i=n(1413),a=n(72791),l=n(20068),r=n(80184);t.Z=function(e){var t=e.tooltip,n=e.children,o=e.errorProps,s=void 0===o?null:o;return(0,r.jsx)(l.Z,{title:t,children:(0,r.jsx)("span",{children:s?(0,a.cloneElement)(n,(0,i.Z)({},s)):n})})}},31300:function(e,t,n){n(72791);var i=n(64554),a=n(38734),l=n(80184);t.Z=function(e){var t=e.onlineCount,n=void 0===t?0:t,r=e.offlineCount,o=void 0===r?0:r,s=e.icon,d=void 0===s?null:s,c=e.label,x=void 0===c?"":c,u=e.okStatusText,p=void 0===u?"Online":u,f=e.notOkStatusText,h=void 0===f?"Offline":f;return(0,l.jsx)(i.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,l.jsxs)(i.Z,{sx:{flex:1,display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,l.jsxs)(i.Z,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,l.jsx)(i.Z,{sx:{fontSize:"16px",fontWeight:600},children:x}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:{md:"0px",xs:"10px"},fontSize:{xl:"55px",lg:"50px",md:"45px",xs:"35px"},flexFlow:"row",fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px",marginTop:"8px"},"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},children:[(0,l.jsxs)(i.Z,{children:[(0,l.jsx)(i.Z,{className:"stat-value",children:n}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#4CCB92"}},children:[(0,l.jsx)(a.J$M,{}),(0,l.jsx)("div",{className:"stat-text",children:p})]})]}),(0,l.jsxs)(i.Z,{children:[(0,l.jsx)(i.Z,{className:"stat-value",children:o}),(0,l.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:"#C83B51"}},children:[(0,l.jsx)(a.J$M,{})," ",(0,l.jsx)("div",{className:"stat-text",children:h})]})]})]})]}),(0,l.jsx)(i.Z,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:d})]})})}},879:function(e,t,n){n.d(t,{D_:function(){return r},Et:function(){return a},GJ:function(){return l},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#E7A219"},a=function(e,t){return e<=t/2?i.RED:2!==t&&e===t/2+1?i.YELLOW:e===t?i.GREEN:void 0},l=function(e){switch(e){case"offline":return i.RED;case"online":return i.GREEN;default:return i.YELLOW}},r=function(e,t){return e<=t/2?i.RED:e===t/2+1?i.YELLOW:e===t?i.GREEN:void 0}},24131:function(e,t,n){n.r(t),n.d(t,{default:function(){return Zt}});var i,a=n(29439),l=n(1413),r=n(72791),o=n(26181),s=n.n(o),d=n(93433),c=n(60364),x=n(61889),u=n(11135),p=n(25787),f=n(64554),h=n(23814);!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 m=n(45248),g=n(51846),v=n(82332),j=n(38734),b=n(80184),y=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],Z=function(e){return(0,m.v1)(e,"ns")},C=function(e){return parseInt(e).toString(10)},w=[{id:1,title:"Uptime",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(j.oNq,{}),labelDisplayFunction:m.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:m.ae},{id:51,title:"Usable 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:m.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.areaGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:"#2781B0",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",strokeWidth:3}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.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:m.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:m.ae,xAxisFormatter:m.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(g.Z,{}),labelDisplayFunction:Z},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,b.jsx)(v.Z,{}),labelDisplayFunction:Z},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:m.Ue,yAxisFormatter:m.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,disableYAxis:!0,xAxisFormatter:m.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:m.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:m.ae},{id:64,title:"Download",data:"N/A",type:i.singleValue,labelDisplayFunction:m.ae}],title:"Network"}],S=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]},E=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=s()(e,"targets[0].result[0].values",[]);null===a&&(a=[]);var r=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),o=S(a,r),d=t.labelDisplayFunction?t.labelDisplayFunction(o[1]):o[1];return(0,l.Z)((0,l.Z)({},t),{},{data:d})}break;case i.pieChart:if("gauge"===n){var c=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),x=s()(e,"targets",[]).filter((function(e){return null!==e})),u=x.map((function(e){var t=(e.result&&Array.isArray(e.result)?e.result:[]).map((function(t){var n=s()(t,"values",[]),i=Object.keys(t.metric),a=n.sort((function(e,t){return parseInt(e[0][1])-parseInt(t[0][1])})),l=t.metric[i[0]],r=a[a.length-1];return{name:l,value:parseInt(r[1]),legend:e.legendFormat}}));return t})),p=x[0].result&&x[0].result.length>0?x[0].result[0].values:[],f=S(p,c),h=t.labelDisplayFunction?t.labelDisplayFunction(f[1]):f[1];return(0,l.Z)((0,l.Z)({},t),{},{data:u,innerLabel:h})}break;case i.linearGraph:case i.areaGraph:if("graph"===n){var g=s()(e,"targets",[]);null===g&&(g=[]);var v=[],j=[];g.forEach((function(e,t){var n=s()(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=s()(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,m.C5)(e.keyLabel),fillColor:y[t]||(0,m.C5)(e.keyLabel)})})),Z=j.sort((function(e,t){return e.name-t.name}));return(0,l.Z)((0,l.Z)({},t),{},{widgetConfiguration:b,data:Z})}break;case i.barChart:if("bargauge"===n){var C=s()(e,"targets[0].result",[]);null===C&&(C=[]);var w=function(e,t){return e[0]-t[0]},E=[];return E=t.customStructure?t.customStructure.map((function(e){var t=C.find((function(t){var n=Object.keys(t.metric);return t.metric[n[0]]===e.originTag})),n=s()(t,"values",[]).sort(w),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):C.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=s()(e,"values",[]).sort(w),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,l.Z)((0,l.Z)({},t),{},{data:E})}break;case i.singleRep:if("stat"===n){var N=s()(e,"targets[0].result[0].values",[]);null===N&&(N=[]);var T=s()(e,"options.reduceOptions.calcs[0]","lastNotNull"),I=S(N,T),F=N.sort((function(e,t){return e[0]-t[0]})),A=[];1===F.length&&A.push({value:0}),F.forEach((function(e){A.push({value:parseInt(e[1])})}));var L=t.labelDisplayFunction?t.labelDisplayFunction(I[1]):I[1];return(0,l.Z)((0,l.Z)({},t),{},{data:A,innerLabel:L})}}return t},N=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,m.nk)(parseFloat(e))),(0,b.jsx)(r.Fragment,{children:t})};return 2!==t.length?n():m.Dl.includes(t[1])?(0,b.jsxs)("span",{className:"commonValue",children:[t[0],(0,b.jsx)("span",{className:"unitText",children:t[1]})]}):n()},T=n(19847),I=n(81207),F=n(72455),A=n(18073),L=n(43896),k=(0,F.Z)({tabRoot:{height:"40px",borderBottom:"1px solid #eaeaea"},root:{width:"120px",backgroundColor:"transparent",paddingTop:0,paddingBottom:0,fontSize:"14px",fontWeight:600,color:"#07193E",height:"40px"},selected:{"&.MuiTab-selected":{backgroundColor:"#F6F7F7 !important"},"&.MuiTab-wrapper":{color:"#07193E",fontWeight:600}},indicator:{background:"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;",height:2},scroller:{maxWidth:1185,position:"relative","&::after":{content:'" "',backgroundColor:"#EEF1F4",height:2,width:"100%",display:"block"}}}),R=function(e){var t=e.selectedTab,n=e.onChange,i=e.tabOptions,a=k();return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(A.Z,{indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",value:t,onChange:function(e,t){n(t)},classes:{root:a.tabRoot,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)}))}))})})},B=n(20601),W=n(38725),D=n(90466),P=n(12891),z=n(24714),M=n(41048),O=n(35667),G=n(95193),U=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,b.jsxs)("div",{className:l.customTooltip,children:[(0,b.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,b.jsxs)("div",{className:l.labelContainer,children:[(0,b.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,b.jsx)("div",{className:l.itemValue,children:(0,b.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),_=n(29598),K=n(72401),V=n(64119),H=n(71080),$=n(25469),Y=function(e){var t=e.panelItem,n=(0,$.TL)();return(0,b.jsx)(f.Z,{sx:{alignItems:"right",gap:"10px","& .link-text":{color:"#2781B0",fontSize:"12px",fontWeight:600},"& .zoom-graph-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:(0,b.jsx)("button",{onClick:function(){n((0,H.xG)(t))},className:"zoom-graph-icon",children:(0,b.jsx)(V.Z,{})})})},J=n(87995),q=n(71715),Q=n(23786),X=n(49900),ee=n(91097),te=function(e){var t=e.title,n=e.componentRef,i=e.data,l=r.useState(null),o=(0,a.Z)(l,2),s=o[0],d=o[1],c=Boolean(s),x=(0,$.TL)(),u=function(){var e;null!==i&&i.length>0?function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}(null!==t?(t+"_"+Date.now().toString()+".csv").replace(/\s+/g,"").trim().toLowerCase():"widgetData_"+Date.now().toString()+".csv",(e=i,[Object.keys(e[0])].concat(e).map((function(e){return Object.values(e).toString()})).join("\n"))):function(e){x((0,J.Ih)(e))}({errorMessage:"Unable to download widget data",detailedError:"Unable to download widget data - data not available"})};return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)(f.Z,{justifyItems:"center",sx:{"& .download-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:[(0,b.jsx)("button",{onClick:function(e){d(e.currentTarget)},className:"download-icon",children:(0,b.jsx)(j._8t,{})}),(0,b.jsxs)(q.Z,{id:"download-widget-main-menu","aria-labelledby":"download-widget-main",anchorEl:s,open:c,onClose:function(){d(null)},children:[(0,b.jsx)(Q.Z,{onClick:function(){u()},children:(0,b.jsx)(X.Z,{children:"Download as CSV"})}),(0,b.jsx)(Q.Z,{onClick:function(){!function(){if(null!==t){var e=(t+"_"+Date.now().toString()+".png").replace(/\s+/g,"").trim().toLowerCase();(0,ee.exportComponentAsPNG)(n,{fileName:e})}else{var i="widgetData_"+Date.now().toString()+".png";(0,ee.exportComponentAsPNG)(n,{fileName:i})}}()},children:(0,b.jsx)(X.Z,{children:"Download as PNG"})})]})]})})},ne=function(e){var t=e.y,n=e.payload;return(0,b.jsx)("text",{width:50,fontSize:"69.7%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:400,dy:3,children:n.value})},ie=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}}))}))((function(e){var t=e.classes,n=e.title,i=e.panelItem,l=e.timeStart,o=e.timeEnd,s=e.propLoading,d=e.apiPrefix,c=e.zoomActivated,u=void 0!==c&&c,p=(0,$.TL)(),f=(0,r.useState)(!0),h=(0,a.Z)(f,2),m=h[0],g=h[1],v=(0,r.useState)([]),j=(0,a.Z)(v,2),y=j[0],Z=j[1],C=(0,r.useState)(null),w=(0,a.Z)(C,2),S=w[0],N=w[1],T=(0,r.useState)(!1),F=(0,a.Z)(T,2),A=F[0],L=F[1],k=(0,r.useRef)();(0,r.useEffect)((function(){s&&g(!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}I.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=E(e,i);Z(t.data),N(t),g(!1)})).catch((function(e){p((0,J.Ih)(e)),g(!1)}))}}),[m,i,o,l,p,d]);var R=S?S.widgetConfiguration:[],V=0,H=0;if(1===R.length){var q=R[0];y.forEach((function(e,t){e[q.dataKey]>H&&(H=e[q.dataKey],V=t)}))}var Q=(0,_.Z)(),X=(0,G.Z)(Q.breakpoints.up("md"));return(0,b.jsxs)("div",{className:u?"":t.singleValueContainer,onMouseOver:function(){L(!0)},onMouseLeave:function(){L(!1)},children:[!u&&(0,b.jsxs)(x.ZP,{container:!0,children:[(0,b.jsx)(x.ZP,{item:!0,xs:10,alignItems:"start",justifyItems:"start",children:(0,b.jsx)("div",{className:t.titleContainer,children:n})}),(0,b.jsx)(x.ZP,{item:!0,xs:1,display:"flex",justifyContent:"flex-end",children:A&&(0,b.jsx)(Y,{panelItem:i})}),(0,b.jsx)(x.ZP,{item:!0,xs:1,display:"flex",justifyContent:"flex-end",children:(0,b.jsx)(te,{title:n,componentRef:k,data:y})})]}),m&&(0,b.jsx)("div",{className:t.loadingAlign,children:(0,b.jsx)(K.Z,{})}),!m&&(0,b.jsx)("div",{ref:k,className:u?t.zoomChartCont:t.contentContainer,children:(0,b.jsx)(B.h,{width:"99%",children:(0,b.jsxs)(W.v,{data:y,layout:"vertical",barCategoryGap:1,children:[(0,b.jsx)(D.K,{type:"number",hide:!0}),(0,b.jsx)(P.B,{dataKey:"name",type:"category",interval:0,tick:(0,b.jsx)(ne,{}),tickLine:!1,axisLine:!1,width:150,hide:!X,style:{fontSize:"12px",fontWeight:100}}),R.map((function(e){return(0,b.jsx)(z.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:u?25:12,children:1===R.length?(0,b.jsx)(r.Fragment,{children:y.map((function(t,n){return(0,b.jsx)(M.b,{fill:n===V?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,b.jsx)(O.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,b.jsx)(U,{barChartConfiguration:R})})]})})})]})})),ae=n(37762),le=n(28265),re=n(82839),oe=n(18602),se=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.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,b.jsxs)("div",{className:r.customTooltip,children:[(0,b.jsx)("div",{className:r.timeStampTitle,children:(0,m.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,b.jsxs)("div",{className:r.labelContainer,children:[(0,b.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,b.jsx)("div",{className:r.itemValue,children:(0,b.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),de=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{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:{width:40,height:40,textAlign:"center",margin:"15px auto"}}))}))((function(e){var t=e.classes,n=e.title,i=e.timeStart,l=e.timeEnd,o=e.propLoading,s=e.panelItem,d=e.apiPrefix,c=e.hideYAxis,u=void 0!==c&&c,p=e.areaWidget,h=void 0!==p&&p,m=e.yAxisFormatter,g=void 0===m?function(e){return e}:m,v=e.xAxisFormatter,j=void 0===v?function(e,t,n){return e}:v,y=e.zoomActivated,Z=void 0!==y&&y,C=(0,$.TL)(),w=(0,r.useState)(!0),S=(0,a.Z)(w,2),N=S[0],T=S[1],F=(0,r.useState)(!1),A=(0,a.Z)(F,2),L=A[0],k=A[1],R=(0,r.useState)([]),W=(0,a.Z)(R,2),z=W[0],M=W[1],U=(0,r.useState)([]),V=(0,a.Z)(U,2),H=V[0],q=V[1],Q=(0,r.useState)(0),X=(0,a.Z)(Q,2),ee=X[0],ne=X[1],ie=(0,r.useState)(null),de=(0,a.Z)(ie,2),ce=de[0],xe=de[1],ue=(0,r.useRef)();(0,r.useEffect)((function(){o&&T(!0)}),[o]),(0,r.useEffect)((function(){if(N){var e=0;if(null!==i&&null!==l){var t=l.unix()-i.unix(),n=Math.floor(t/60);e=n<1?15:n}I.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(s.id,"/?step=").concat(e,"&").concat(null!==i?"&start=".concat(i.unix()):"").concat(null!==i&&null!==l?"&":"").concat(null!==l?"end=".concat(l.unix()):"")).then((function(e){var t=E(e,s);M(t.data),xe(t),T(!1);var n,i=0,a=(0,ae.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,b.jsx)(Ze,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.simpleWidget:var o,s=null;return 80===e.id?s=Se:81===e.id?s=Ee:1===e.id&&(s=Ne),[80,81,1].includes(e.id)&&(o=function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id,l=e.iconWidget;return(0,b.jsx)(s,{valueToRender:t,loading:n,title:i,id:a,iconWidget:l})}),(0,b.jsx)(fe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,iconWidget:e.widgetIcon,renderFn:o});case i.pieChart:return 50===e.id?(0,b.jsx)(he,{children:(0,b.jsx)(Ce,{value:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l})}):(0,b.jsx)(ue,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.linearGraph:case i.areaGraph:return(0,b.jsx)(de,{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,b.jsx)(ie,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,zoomActivated:r});case i.singleRep:var d=e.fillColor?e.fillColor:e.color;return(0,b.jsx)(be,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,color:e.color,fillColor:d,apiPrefix:l});default:return null}},Ie=n(56028),Fe=function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,l=e.apiPrefix,o=(0,$.TL)();return t?(0,b.jsx)(Ie.Z,{title:t.title,onClose:function(){o((0,H.jv)())},modalOpen:n,wideLimit:!1,noContentPadding:!0,children:(0,b.jsx)(r.Fragment,{children:Te(t,i,a,!0,l,!0)})}):null},Ae=n(63856),Le=[{sx:{minWidth:0,display:"grid",gridTemplateColumns:{md:"1fr 1fr 1fr 1fr",sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:66},{componentId:44},{componentId:500},{componentId:501}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{md:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:50},{componentId:502}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{md:"1fr 1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:80},{componentId:81},{componentId:1}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:68},{componentId:52}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:63},{componentId:70}]}],ke=[{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:60}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"30px"},columns:[{componentId:71,sx:{flex:1,width:"50%",flexShrink:0}},{componentId:17,sx:{flex:1,width:"50%",flexShrink:0}}]},{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:73}]}],Re=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:76},{componentId:77}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:82},{componentId:74}]}],Be=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:11},{componentId:8}]}],We=function(e){var t=e.children;return(0,b.jsx)(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},children:t})},De=n(57621),Pe=n(9585),ze=n(43504),Me=(0,F.Z)({root:{backgroundColor:"#fff",padding:0},title:(0,l.Z)({},h.NP.titleContainer),content:{maxWidth:"100%"}}),Oe=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},h.NP),{},{cardRoot:(0,l.Z)((0,l.Z)({},h.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,d=void 0!==s&&s,c=e.classes,x=Me(),u=function(){return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)("div",{className:c.subHearderContainer,children:[(0,b.jsxs)("div",{className:c.leftSide,children:[(0,b.jsx)("div",{children:(0,b.jsxs)("span",{className:c.metricText,children:[n,(0,b.jsx)("span",{className:c.unitText,children:i})]})}),a&&(0,b.jsx)("div",{className:"".concat(c.subMessage," ").concat(a.fontWeight?a.fontWeight:""),children:a.message})]}),(0,b.jsx)("div",{className:c.rightSide,children:o})]})})},p=function(){return(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)("div",{className:c.headerContainer,children:[(0,b.jsx)("span",{className:c.title,children:t}),l&&(0,b.jsx)(r.Fragment,{children:(0,b.jsx)("span",{className:c.viewAll,children:(0,b.jsx)(ze.rU,{to:l,children:"View All"})})})]})})};return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(De.Z,{className:"".concat(c.cardRoot," ").concat(d?c.extraMargin:""),children:""!==n&&(0,b.jsx)(Pe.Z,{title:(0,b.jsx)(p,{}),subheader:(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(u,{})}),classes:{root:x.root,title:x.title,content:x.content}})})})})),Ge=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(Oe,{title:t,metricValue:n,rightComponent:i})})},Ue=function(e){var t=e.panelItem,n=e.timeStart,i=e.timeEnd,l=e.propLoading,o=e.apiPrefix,s=e.statLabel,d=(0,$.TL)(),c=(0,r.useState)(!0),x=(0,a.Z)(c,2),u=x[0],p=x[1],h=(0,r.useState)(""),m=(0,a.Z)(h,2),g=m[0],v=m[1];return(0,r.useEffect)((function(){l&&p(!0)}),[l]),(0,r.useEffect)((function(){if(u){var e=0;if(null!==n&&null!==i){var a=i.unix()-n.unix(),l=Math.floor(a/60);e=l<1?15:l}I.Z.invoke("GET","/api/v1/".concat(o,"/info/widgets/").concat(t.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.unix()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.unix()):"")).then((function(e){var n=E(e,t);v(n.data),p(!1)})).catch((function(e){d((0,J.Ih)(e)),p(!1)}))}}),[u,t,i,n,d,o]),u?(0,b.jsx)(f.Z,{sx:{width:"100%",paddingTop:"5px",textAlign:"center",margin:"auto"},children:(0,b.jsx)(K.Z,{style:{width:12,height:12}})}):(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{className:"stat-value",children:g}),s]})},_e=function(e){var t=e.statItemLeft,n=void 0===t?null:t,i=e.statItemRight,a=void 0===i?null:i,l=e.icon,r=void 0===l?null:l,o=e.label,s=void 0===o?"":o;return(0,b.jsx)(f.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:s}),(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:{md:"0px",xs:"10px"},fontSize:{xl:"55px",lg:"50px",md:"45px",xs:"35px"},flexFlow:"row",fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px",marginTop:"8px"},"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},children:[n,a]})]}),(0,b.jsx)(f.Z,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:r})]})})},Ke=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.id,c=(0,a.Z)(s,2),x=c[0],u=c[1],p=(0,b.jsx)(Ue,{panelItem:x,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,statLabel:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#4CCB92"}},children:[(0,b.jsx)(j.J$M,{}),(0,b.jsx)("div",{className:"stat-text",children:"Online"})]})}),h=(0,b.jsx)(Ue,{panelItem:u,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,statLabel:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:"#C83B51"}},children:[(0,b.jsx)(j.J$M,{}),(0,b.jsx)("div",{className:"stat-text",children:"Offline"})]})}),m=null,g="";return 500===d?(m=(0,b.jsx)(j.SBZ,{}),g="Servers"):501===d&&(m=(0,b.jsx)(j.FU8,{}),g="Drives"),(0,b.jsx)(_e,{statItemLeft:p,statItemRight:h,icon:m,label:g})},Ve=function(e){var t=e.value,n=e.loading;return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",marginTop:"10px",gap:"10px","& .min-icon":{height:"15px",width:"15px",fill:"#4ccb92"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"18px",color:"#696969"},children:"GET"}),n?(0,b.jsx)(K.Z,{style:{width:"15px",height:"15px"}}):(0,b.jsx)(j.vUj,{})]}),(0,b.jsx)(f.Z,{sx:{fontSize:"50px",fontFamily:"Lato",fontWeight:600},children:t})]})},He=function(e){var t=e.value,n=e.loading;return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",gap:"10px",alignItems:"center",marginTop:"10px","& .min-icon":{height:"15px",width:"15px",fill:"#2781b0"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"18px",color:"#696969",fontWeight:"normal"},children:"PUT"}),n?(0,b.jsx)(K.Z,{style:{width:"15px",height:"15px"}}):(0,b.jsx)(j.Uxq,{})]}),(0,b.jsx)(f.Z,{sx:{fontSize:"50px",fontFamily:"Lato",fontWeight:600},children:t})]})},$e=function(e){var t=e.value,n=e.timeStart,i=e.timeEnd,l=e.propLoading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=(0,a.Z)(s,2),c=d[0],x=d[1],u=(0,b.jsx)(Ze,{title:t.title,panelItem:c,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,b.jsx)(He,{value:t,loading:n,title:i,id:a})}}),p=(0,b.jsx)(Ze,{title:t.title,panelItem:x,timeStart:n,timeEnd:i,propLoading:l,apiPrefix:r,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,b.jsx)(Ve,{value:t,loading:n,title:i,id:a})}});return(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"},gap:"15px","& .unitText":{fontSize:"14px",color:"#5E5E5E",marginLeft:"5px"}},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:"Network"}),(0,b.jsx)(f.Z,{sx:{position:"relative",width:110,height:110,marginLeft:{sm:"auto",xs:""}},children:(0,b.jsx)(f.Z,{sx:{position:"absolute",display:"flex",flexFlow:"column",alignItems:"center",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:p})}),(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center",marginLeft:{sm:"auto",xs:""}},children:(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center","& .value":{fontSize:"50px",fontFamily:"Lato"},"& .unit":{color:"#5E5E5E",fontSize:"18px",marginLeft:"12px",marginTop:"10px"}},children:u})}),(0,b.jsx)(f.Z,{sx:{marginLeft:"15px",height:"100%",display:"flex",alignItems:"flex-start","& .min-icon":{height:"15px",width:"15px"}},children:(0,b.jsx)(j.QBB,{})})]})},Ye=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.title,c=void 0===d?"":d,x=t.id,u=(0,a.Z)(s,2),p=u[0],f=u[1];return[500,501].includes(x)?(0,b.jsx)(he,{children:(0,b.jsx)(Ke,{info:t,timeStart:n,timeEnd:i,loading:l,apiPrefix:r})}):502===x?(0,b.jsx)(he,{children:(0,b.jsx)($e,{apiPrefix:r,timeEnd:i,timeStart:n,value:t,propLoading:l})}):(0,b.jsx)(Ge,{title:c,leftComponent:Te(p,n,i,l,r),rightComponent:Te(f,n,i,l,r)})},Je=n(74794),qe=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)((0,l.Z)({},h.OR),h.bN),{},{dashboardRow:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap"}}))}))((function(e){var t=e.apiPrefix,n=void 0===t?"admin":t,i=(0,$.TL)(),l=(0,c.v9)((function(e){return e.dashboard.zoom.openZoom})),o=(0,c.v9)((function(e){return e.dashboard.zoom.widgetRender})),s=(0,r.useState)(null),u=(0,a.Z)(s,2),p=u[0],h=u[1],m=(0,r.useState)(null),g=(0,a.Z)(m,2),v=g[0],j=g[1],y=(0,r.useState)(!0),Z=(0,a.Z)(y,2),C=Z[0],S=Z[1],N=(0,r.useState)(w),F=(0,a.Z)(N,2),A=F[0],L=F[1],k=(0,r.useState)(0),B=(0,a.Z)(k,2),W=B[0],D=B[1],P=(0,r.useCallback)((function(){var e=0;if(null!==p&&null!==v){var t=v.unix()-p.unix(),a=Math.floor(t/60);e=a<1?15:a}I.Z.invoke("GET","/api/v1/".concat(n,"/info?step=").concat(e,"&").concat(null!==p?"&start=".concat(p.unix()):"").concat(null!==p&&null!==v?"&":"").concat(null!==v?"end=".concat(v.unix()):"")).then((function(e){if(e.widgets){var t=(n=e.widgets,w.map((function(e){var t=n.find((function(t){return t.title.toLowerCase().trim()===e.title.toLowerCase().trim()}));return E(t,e)})));L(t)}else i((0,J.Ih)({errorMessage:"Widget information could not be retrieved at this time. Please try again",detailedError:""}));var n;S(!1)})).catch((function(e){i((0,J.Ih)(e)),S(!1)}))}),[p,v,i,n]);(0,r.useEffect)((function(){C&&P()}),[C,P]);var z=function(e){return e.reduce((function(e,t,i){var a=t.columns,o=(void 0===a?[]:a).map((function(e,t){var a;return function(e,t){return(0,b.jsx)(r.Fragment,{children:e?(0,b.jsx)(r.Fragment,{children:(0,b.jsx)(f.Z,{children:e.mergedPanels?(0,b.jsx)(Ye,{info:e,timeStart:p,timeEnd:v,loading:C,apiPrefix:n}):Te(e,p,v,C,n,l)})}):null},"widget-".concat(t))}((a=e.componentId,A.find((function(e){return e.id===a}))),"".concat(i,"-").concat(t))})),s=(0,b.jsx)(f.Z,{sx:t.sx,children:o},"layout-row-".concat(i));return[].concat((0,d.Z)(e),[s])}),[])};return(0,b.jsxs)(Je.Z,{children:[l&&(0,b.jsx)(Fe,{modalOpen:l,timeStart:p,timeEnd:v,widgetRender:0,value:o,apiPrefix:n}),(0,b.jsx)(x.ZP,{item:!0,xs:12,children:(0,b.jsx)(R,{selectedTab:W,onChange:function(e){D(e)},tabOptions:[{label:"Usage"},{label:"Traffic"},{label:"Resources"}]})}),(0,b.jsxs)(x.ZP,{item:!0,xs:12,sx:{paddingTop:"20px"},children:[(0,b.jsx)(f.Z,{sx:{marginBottom:"20px"},children:(0,b.jsx)(Ae.Z,{timeStart:p,setTimeStart:h,timeEnd:v,setTimeEnd:j,triggerSync:function(){S(!0)}})}),(0,b.jsx)(T.x,{index:0,value:W,children:(0,b.jsx)(We,{children:A.length?z(Le):null})}),(0,b.jsx)(T.x,{index:1,value:W,children:(0,b.jsx)(We,{children:A.length?z(ke):null})}),(0,b.jsx)(T.x,{index:2,value:W,children:(0,b.jsxs)(We,{children:[A.length?z(Re):null,(0,b.jsx)("h2",{style:{margin:0,borderBottom:"1px solid #dedede"},children:"Advanced"}),A.length?z(Be):null]})})]})]})})),Qe=n(32291),Xe=n(40986),et=n(23804),tt=n(31300),nt=n(98444),it=n.n(nt),at=n(79834),lt=n(90493),rt=n(76278),ot=n(56125),st=n(879),dt=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;return(0,b.jsx)(f.Z,{sx:{alignItems:"baseline",padding:"5px",display:"flex",gap:"5px"},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column","& .stat-text":{color:"#5E5E5E",fontSize:"12px"},"& .stat-value":{fontSize:"18px",color:"#07193E",display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:[(0,b.jsxs)("div",{className:"stat-value",children:[a," ",(0,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column",marginLeft:"5px",maxWidth:"40px","&:first-of-type(svg)":{fill:"#848484"}},children:s?(0,b.jsx)(f.Z,{sx:{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{fill:r,width:"10px",height:"10px"}},children:(0,b.jsx)(j.J$M,{})}):(0,b.jsx)(f.Z,{sx:{width:"12px",height:"12px"}})})]}),(0,b.jsx)("div",{className:"stat-text",children:n})]})})},ct=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.SJ))}))((function(e){var t=e.server,n=Object.keys(s()(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,b.jsx)(f.Z,{sx:{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:{sm:"row",xs:"column"}},children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center"},children:[(0,b.jsx)(f.Z,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""}),(null===t||void 0===t?void 0:t.state)&&(0,b.jsx)(f.Z,{sx:{marginLeft:"8px","& .min-icon":{fill:(0,st.GJ)(t.state),height:"14px",width:"14px"}},children:(0,b.jsx)(j.J$M,{})})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flex:"1.5",gap:{md:"5%",xs:"5%"}},children:[(0,b.jsx)(dt,{statusColor:(0,st.Et)(r,a),label:"Drives",hasStatus:!0,value:"".concat(r,"/").concat(a)}),(0,b.jsx)(dt,{statusColor:(0,st.D_)(l,i),label:"Network",hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,b.jsx)(dt,{statusColor:"green",label:"Up time",value:null!==t&&void 0!==t&&t.uptime?(0,m.v1)(t.uptime):"N/A"})]}),(0,b.jsx)(dt,{statusColor:"green",label:"",value:(0,b.jsxs)(f.Z,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"2px",fontSize:"12px",marginTop:"5px","& .label":{fontWeight:600,marginRight:"3px"}},children:[(0,b.jsx)("span",{className:"label",children:"Version:"}),t.version?t.version:"N/A"]})})]})})})),xt=function(e){switch(e){case"offline":return st.yh.RED;case"ok":return st.yh.GREEN;default:return st.yh.YELLOW}},ut=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},h.SJ))}))((function(e){var t=e.drive,n=t.totalSpace||0,i=t.usedSpace||0,a=[{value:n-i,color:"#D6D6D6",label:"Free Space"},{value:t.usedSpace,color:(0,m.hn)(i,n),label:"Used Space"}];return(0,b.jsx)(f.Z,{sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",padding:"20px",border:"1px solid #eaeaea"},children:(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,b.jsxs)(f.Z,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:xt(t.state),flexShrink:0},"& .drive-endpoint":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",marginRight:"8px",fontWeight:600,fontSize:{md:"16px",xs:"10px"}}},children:[(0,b.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""}),t.state&&(0,b.jsx)(j.J$M,{})]}),(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",alignItems:"center",paddingLeft:"20px",marginTop:"10px",flexFlow:{sm:"row",xs:"column"},"& .info-label":{color:"#5E5E5E",fontSize:"12px",textAlign:"center"},"& .info-value":{fontSize:"18px",color:"#07193E",display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:[(0,b.jsx)(f.Z,{sx:{flex:1},children:(0,b.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,b.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:t.usedSpace?(0,m.l5)(t.usedSpace):"-"}),(0,b.jsx)("div",{children:(0,b.jsx)(ce.u,{width:110,height:110,children:(0,b.jsx)(xe.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,b.jsx)(M.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})]})}),(0,b.jsxs)(f.Z,{sx:{display:"flex",gap:"5%",alignItems:"center",flex:2,flexGrow:1},children:[(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.totalSpace?t.totalSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Capacity"})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.usedSpace?t.usedSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Used"})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,b.jsx)("div",{className:"info-value",children:(0,m.ae)(t.availableSpace?t.availableSpace.toString():"0")}),(0,b.jsx)("label",{className:"info-label",children:"Available"})]})]})]})]})})})),pt=n(25183),ft=function(e){var t=e.data,n=r.useState(t.length>1?"":t[0].endpoint+"-0"),i=(0,a.Z)(n,2),l=i[0],o=i[1],s=function(e){o(e)};return(0,b.jsxs)(f.Z,{children:[(0,b.jsxs)(f.Z,{sx:{marginBottom:"10px"},children:["Servers (",t.length,")"]}),(0,b.jsx)(lt.Z,{sx:{width:"100%",flex:1,padding:"0"},component:"nav","aria-labelledby":"nested-list-subheader",children:t.map((function(e,t){var n="".concat(e.endpoint,"-").concat(t),i=l===n;return(0,b.jsxs)(r.Fragment,{children:[(0,b.jsxs)(rt.Z,{disableRipple:!0,onClick:function(){s(i?"":n)},className:i?"expanded":"",sx:{display:"flex",alignItems:"center",justifyContent:"space-between",border:"1px solid #f1f1f1",padding:"3px 10px 3px 10px","&:hover":{background:"#bebbbb0d"}},children:[(0,b.jsx)(ct,{server:e,index:t}),(0,b.jsx)(f.Z,{sx:{height:"25px",width:"25px",background:"#FBFAFA",borderRadius:"2px","&:hover":{background:"#fafafa"},display:{md:"block",xs:"none"},"& .collapse-icon":{fill:"#494949","& g rect":{fill:"#ffffff"}},"& .expand-icon":{fill:"#494949","& rect":{fill:"#ffffff"}}},children:i?(0,b.jsx)(pt.cg,{className:"collapse-icon"}):(0,b.jsx)(pt.Ud,{className:"expand-icon"})})]}),i?(0,b.jsxs)(f.Z,{sx:{border:"1px solid #f1f1f1",borderTop:"0"},children:[(0,b.jsxs)(at.Z,{component:"div",sx:{paddingLeft:"30px"},children:["Drives (",e.drives.length,")"]},"".concat(t,"-drive-details")),(0,b.jsx)(ot.Z,{in:i,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",flex:1,display:"flex",padding:{md:"15px 30px",xs:"10px 10px"},"& .MuiCollapse-wrapperInner":{display:"flex",flexFlow:"column",gap:"15px"}},children:e.drives.map((function(e,t){return(0,b.jsx)(ut,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},"".concat(e.endpoint,"-").concat(t)):null]},n)}))})]})},ht=function(e){var t=e.counterValue,n=e.label,i=void 0===n?"":n,a=e.icon,l=void 0===a?null:a,r=e.actions,o=void 0===r?null:r;e.loading;return(0,b.jsx)(f.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"},children:(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",width:"100%",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"},position:"absolute"},children:[(0,b.jsxs)(f.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"8px",zIndex:10,overflow:"hidden"},children:[(0,b.jsx)(f.Z,{sx:{fontSize:"16px",fontWeight:600},children:i}),(0,b.jsx)(me.Z,{title:t,placement:"bottom",enterDelay:500,children:(0,b.jsx)(f.Z,{sx:{fontSize:{xl:"55px",lg:"50px",md:"36px",sm:"35px",xs:"35px"},fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:{md:187,xs:200},flexFlow:{md:"row",xs:"column"}},children:t})})]}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"flex-start",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:[l,(0,b.jsx)(f.Z,{sx:{display:"flex"},children:o})]})]})})},mt=function(e){var t=e.usageValue,n=e.total,i=e.unit,a=[{value:n,color:"#D6D6D6",label:"Free Space"},{value:t,color:"#073052",label:"Used Space"}];return(0,b.jsxs)(f.Z,{sx:{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"space-between",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,b.jsxs)(f.Z,{children:[(0,b.jsx)("div",{className:"usage-label",children:(0,b.jsx)("span",{children:"Reported Usage"})}),(0,b.jsx)(me.Z,{title:"".concat(t," Bytes"),children:(0,b.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,b.jsx)("label",{className:"unit-type",children:i})]}),(0,b.jsx)(f.Z,{children:(0,b.jsx)(f.Z,{sx:{flex:1},children:(0,b.jsx)("div",{style:{position:"relative",width:105,height:105,top:"-8px"},children:(0,b.jsx)("div",{children:(0,b.jsx)(ce.u,{width:105,height:105,children:(0,b.jsx)(xe.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:45,innerRadius:35,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,b.jsx)(M.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})})})})]})},gt=n(75952),vt=n(56087),jt=n(27454),bt=function(e){var t=e.children;return(0,b.jsx)(f.Z,{sx:{border:"1px solid #f1f1f1",padding:{md:"15px",xs:"5px"},height:"136px",maxWidth:{sm:"100%"}},children:t})},yt=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,m.Am)(e)}(n),a=t||{},l=a.lastScan,o=void 0===l?"n/a":l,s=a.lastHeal,c=void 0===s?"n/a":s,x=a.upTime,u=void 0===x?"n/a":x,p=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),h=[];p.forEach((function(e){var t=e.drives.map((function(e){return e}));h=[].concat((0,d.Z)(h),(0,d.Z)(t))}));var g=it()(p,"state"),v=g.offline,y=void 0===v?[]:v,Z=g.online,C=void 0===Z?[]:Z,w=it()(h,"state"),S=w.offline,E=void 0===S?[]:S,N=w.ok,T=void 0===N?[]:N;return(0,b.jsx)(f.Z,{sx:{maxWidth:"1536px",margin:"auto"},children:(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:"27px",marginBottom:"40px",marginTop:"40px",marginLeft:"40px",marginRight:"40px"},children:[(0,b.jsxs)(f.Z,{children:[(null===t||void 0===t?void 0:t.prometheusNotReady)&&(0,b.jsx)(et.Z,{iconComponent:(0,b.jsx)(j.a$2,{}),title:"We can't retrieve advanced metrics at this time",help:(0,b.jsxs)(r.Fragment,{children:["MinIO Dashboard will display basic metrics as we couldn't connect to Prometheus successfully.",(0,b.jsx)("br",{})," ",(0,b.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,b.jsx)(et.Z,{iconComponent:(0,b.jsx)(j.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.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,b.jsx)(f.Z,{sx:{paddingTop:"20px",fontSize:"14px","& a":{color:function(e){return e.colors.link}}},children:(0,b.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html",target:"_blank",rel:"noreferrer",children:"Read more about Prometheus on our Docs site."})})]})})]}),(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,b.jsxs)(f.Z,{sx:{display:"grid",gridTemplateRows:"136px",gridTemplateColumns:{sm:"1fr 1fr 1fr",xs:"1fr"},gap:{md:"20px",xs:"20px"}},children:[(0,b.jsx)(bt,{children:(0,b.jsx)(ht,{label:"Buckets",icon:(0,b.jsx)(j.wNb,{}),counterValue:t?(0,m.nk)(t.buckets):0,actions:(0,b.jsx)(ze.rU,{to:vt.gA.BUCKETS,style:{zIndex:999,textDecoration:"none",top:"40px",position:"relative",marginRight:"75px"},children:(0,b.jsx)(jt.Z,{tooltip:"Browse",children:(0,b.jsx)(gt.z,{id:"browse-dashboard",onClick:function(){},label:"Browse",icon:(0,b.jsx)(j.LZ3,{}),variant:"regular",style:{padding:5,height:30,fontSize:14}})})})})}),(0,b.jsx)(bt,{children:(0,b.jsx)(ht,{label:"Objects",icon:(0,b.jsx)(j.xpX,{}),counterValue:t?(0,m.nk)(t.objects):0})}),(0,b.jsx)(bt,{children:(0,b.jsx)(tt.Z,{onlineCount:C.length,offlineCount:y.length,label:"Servers",icon:(0,b.jsx)(j.SBZ,{})})}),(0,b.jsx)(bt,{children:(0,b.jsx)(tt.Z,{offlineCount:E.length,onlineCount:T.length,label:"Drives",icon:(0,b.jsx)(j.FU8,{})})}),(0,b.jsxs)(f.Z,{sx:{gridRowStart:"1",gridRowEnd:"3",gridColumnStart:"3",border:"1px solid #f1f1f1",padding:"15px",display:"grid",justifyContent:"stretch"},children:[(0,b.jsx)(mt,{usageValue:n,total:i.total,unit:i.unit}),(0,b.jsxs)(f.Z,{sx:{display:"flex",flexFlow:"column",gap:"14px"},children:[(0,b.jsx)(we,{icon:(0,b.jsx)(j.lnI,{}),label:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{sx:{display:{md:"inline",xs:"none"}},children:"Time since last"})," ","Heal Activity"]}),value:c}),(0,b.jsx)(we,{icon:(0,b.jsx)(pt.EY,{}),label:(0,b.jsxs)(f.Z,{children:[(0,b.jsx)(f.Z,{sx:{display:{md:"inline",xs:"none"}},children:"Time since last"})," ","Scan Activity"]}),value:o}),(0,b.jsx)(we,{icon:(0,b.jsx)(j.oNq,{}),label:"Uptime",value:u})]})]})]}),(0,b.jsx)(f.Z,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,b.jsx)(ft,{data:p})})]})]})})},Zt=(0,p.Z)((function(e){return(0,u.Z)((0,l.Z)({},(0,h.Bz)(e.spacing(4))))}))((function(e){var t=e.classes,n=(0,$.TL)(),i=(0,r.useState)(!0),l=(0,a.Z)(i,2),o=l[0],d=l[1],c=(0,r.useState)(null),u=(0,a.Z)(c,2),p=u[0],f=u[1],h=(0,r.useCallback)((function(){I.Z.invoke("GET","/api/v1/admin/info").then((function(e){f(e),d(!1)})).catch((function(e){n((0,J.Ih)(e)),d(!1)}))}),[f,d,n]);(0,r.useEffect)((function(){o&&h()}),[o,h]);var m=s()(p,"widgets",null);return(0,b.jsxs)(r.Fragment,{children:[(0,b.jsx)(Qe.Z,{label:"Metrics"}),o?(0,b.jsx)(x.ZP,{container:!0,children:(0,b.jsx)(x.ZP,{item:!0,xs:12,className:t.container,children:(0,b.jsx)(Xe.Z,{})})}):(0,b.jsx)(r.Fragment,{children:null!==m?(0,b.jsx)(qe,{}):(0,b.jsx)(yt,{usage:p})})]})}))},19847:function(e,t,n){n.d(t,{x:function(){return s}});var i=n(1413),a=n(45987),l=n(72791),r=n(80184),o=["children","value","index"],s=function(e){var t=e.children,n=e.value,s=e.index,d=(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"}},d),{},{children:n===s&&(0,r.jsx)(l.Fragment,{children:t})}))}}}]); +//# sourceMappingURL=4131.739594e9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4131.739594e9.chunk.js.map b/portal-ui/build/static/js/4131.739594e9.chunk.js.map new file mode 100644 index 000000000..2f68872ab --- /dev/null +++ b/portal-ui/build/static/js/4131.739594e9.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4131.739594e9.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/TooltipWrapper/TooltipWrapper.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Common/TabSelector/TabSelector.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/BarChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/ExpandGraphLink.tsx","screens/Console/Dashboard/DownloadWidgetDataButton.tsx","screens/Console/Dashboard/Prometheus/Widgets/BarChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/LineChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/LinearGraphWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/PieChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SimpleWidget.tsx","screens/Console/Dashboard/DashboardItemBox.tsx","screens/Console/Dashboard/Prometheus/Widgets/NumericStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/BucketsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/ObjectsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/CapacityItem.tsx","screens/Console/Dashboard/TimeStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/HealActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/ScanActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/LayoutUtil.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/DualStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateItemRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkGetItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkPutItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/MergedWidgetsRenderer.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.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 React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n
\n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\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 { Button } from \"mds\";\nimport { Box, Grid } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport { actionsTray, widgetContainerCommon } from \"../common/styleLibrary\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\nimport SyncIcon from \"../../../../../icons/SyncIcon\";\nimport { OpenListIcon } from \"../../../../../icons\";\n\ninterface IDateRangeSelector {\n classes: any;\n timeStart: any;\n setTimeStart: (date: any) => void;\n timeEnd: any;\n setTimeEnd: (date: any) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...widgetContainerCommon,\n schedulerIcon: {\n opacity: 0.4,\n fontSize: 10,\n \"& svg\": {\n width: 18,\n height: 18,\n },\n },\n selectorLabel: {\n color: \"#9D9E9D\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginLeft: 10,\n fontSize: 12,\n },\n });\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n classes,\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(DateRangeSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Grid, InputLabel, TextField, Tooltip } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { DateTimePicker } from \"@mui/x-date-pickers\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport OpenListIcon from \"../../../../../icons/OpenListIcon\";\n\ninterface IDateTimePicker {\n value: any;\n onChange: (value: any) => any;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n flexGrow: 1,\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n \n {inputItem}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } 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, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\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 noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\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 dispatch(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 if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\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, { cloneElement } from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\ninterface ITooltipWrapperProps {\n tooltip: string;\n children: any;\n errorProps?: any;\n}\n\nconst TooltipWrapper = ({\n tooltip,\n children,\n errorProps = null,\n}: ITooltipWrapperProps) => {\n return (\n \n \n {errorProps ? cloneElement(children, { ...errorProps }) : children}\n \n \n );\n};\n\nexport default TooltipWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon } from \"../../../../icons\";\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n \n {onlineCount}\n \n \n
{okStatusText}
\n
\n \n\n \n {offlineCount}\n \n {\" \"}\n
{notOkStatusText}
\n
\n \n \n \n \n {icon}\n \n \n \n );\n};\n\nexport default StatusCountCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#E7A219\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number\n) => {\n if (activeDisks <= totalDrives / 2) {\n return STATUS_COLORS.RED;\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeDisks === totalDrives) {\n return STATUS_COLORS.GREEN;\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"online\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return STATUS_COLORS.RED;\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeNetwork === networkTotal) {\n return STATUS_COLORS.GREEN;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n IBarChartConfiguration,\n IBarChartRelation,\n IDataSRep,\n ILinearGraphConfiguration,\n IPieChartConfiguration,\n} from \"./Widgets/types\";\n\nexport enum widgetType {\n singleValue = \"singleValue\",\n linearGraph = \"linearGraph\",\n areaGraph = \"areaGraph\",\n barChart = \"barChart\",\n pieChart = \"pieChart\",\n singleRep = \"singleRep\",\n simpleWidget = \"simpleWidget\",\n}\n\nexport interface IDashboardPanel {\n id: number;\n mergedPanels?: IDashboardPanel[];\n title: string;\n data?: string | object[] | IDataSRep[];\n dataOuter?: string | object[];\n type?: widgetType;\n widgetIcon?: any;\n widgetConfiguration?:\n | ILinearGraphConfiguration[]\n | IBarChartConfiguration[]\n | IPieChartConfiguration;\n color?: string;\n fillColor?: string;\n innerLabel?: string;\n labelDisplayFunction?: (value: string) => any;\n disableYAxis?: boolean;\n xAxisFormatter?: (item: string) => string;\n yAxisFormatter?: (item: string) => string;\n customStructure?: IBarChartRelation[];\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport {\n getTimeFromTimestamp,\n niceBytes,\n niceDays,\n representationNumber,\n textToRGBColor,\n units,\n} from \"../../../../common/utils\";\nimport 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: 51,\n title: \"Usable Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 68,\n title: \"Data Usage Growth\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.areaGraph,\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 52,\n title: \"Object size distribution\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"a\",\n color: \"#2781B0\",\n background: {\n fill: \"#EEF1F4\",\n },\n greatestColor: \"#081C42\",\n },\n ],\n customStructure: [\n { originTag: \"LESS_THAN_1024_B\", displayTag: \"Less than 1024B\" },\n {\n originTag: \"BETWEEN_1024_B_AND_1_MB\",\n displayTag: \"Between 1024B and 1MB\",\n },\n {\n originTag: \"BETWEEN_1_MB_AND_10_MB\",\n displayTag: \"Between 1MB and 10MB\",\n },\n {\n originTag: \"BETWEEN_10_MB_AND_64_MB\",\n displayTag: \"Between 10MB and 64MB\",\n },\n {\n originTag: \"BETWEEN_64_MB_AND_128_MB\",\n displayTag: \"Between 64MB and 128MB\",\n },\n {\n originTag: \"BETWEEN_128_MB_AND_512_MB\",\n displayTag: \"Between 128MB and 512MB\",\n },\n {\n originTag: \"GREATER_THAN_512_MB\",\n displayTag: \"Greater than 512MB\",\n },\n ],\n type: widgetType.barChart,\n },\n {\n id: 66,\n title: \"Buckets\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 44,\n title: \"Objects\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 63,\n title: \"API Data Received Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n strokeWidth: 3,\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 61,\n title: \"Total Open FDs\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#22B573\",\n fillColor: \"#A6E8C4\",\n },\n {\n id: 62,\n title: \"Total Goroutines\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#F7655E\",\n fillColor: \"#F4CECE\",\n },\n {\n id: 77,\n title: \"Node CPU Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 60,\n title: \"API Request Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 70,\n title: \"API Data Sent Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 17,\n title: \"Internode Data Transfer\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 73,\n title: \"Node IO\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 80,\n title: \"Time Since Last Heal Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 81,\n title: \"Time Since Last Scan Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 71,\n title: \"API Request Error Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 76,\n title: \"Node Memory Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 74,\n title: \"Drive Used Capacity\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 82,\n title: \"Drives Free Inodes\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n disableYAxis: true,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 11,\n title: \"Node Syscalls\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 8,\n title: \"Node File Descriptors\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 500,\n mergedPanels: [\n {\n id: 53,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 69,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Servers\",\n },\n {\n id: 501,\n mergedPanels: [\n {\n id: 9,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 78,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Drives\",\n },\n {\n id: 502,\n mergedPanels: [\n {\n id: 65,\n title: \"Upload\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n {\n id: 64,\n title: \"Download\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n ],\n title: \"Network\",\n },\n];\n\nconst calculateMainValue = (elements: any[], metricCalc: string) => {\n if (elements.length === 0) {\n return [\"\", \"0\"];\n }\n\n switch (metricCalc) {\n case \"mean\":\n const sumValues = elements.reduce((accumulator, currValue) => {\n return accumulator + parseFloat(currValue[1]);\n }, 0);\n\n const mean = Math.floor(sumValues / elements.length);\n\n return [\"\", mean.toString()];\n default:\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n return sortResult[sortResult.length - 1];\n }\n};\n\nconst constructLabelNames = (metrics: any, legendFormat: string) => {\n const keysToReplace = Object.keys(metrics);\n const expToReplace = new RegExp(`{{(${keysToReplace.join(\"|\")})}}`, \"g\");\n\n let replacedLegend = legendFormat.replace(expToReplace, (matchItem) => {\n const nwMatchItem = matchItem.replace(/({{|}})/g, \"\");\n return metrics[nwMatchItem];\n });\n\n const countVarsOpen = (replacedLegend.match(/{{/g) || []).length;\n const countVarsClose = (replacedLegend.match(/}}/g) || []).length;\n\n let cleanLegend = replacedLegend.replace(/{{(.*?)}}/g, \"\");\n\n if (\n countVarsOpen === countVarsClose &&\n countVarsOpen !== 0 &&\n countVarsClose !== 0\n ) {\n keysToReplace.forEach((element) => {\n replacedLegend = replacedLegend.replace(element, metrics[element]);\n });\n\n cleanLegend = replacedLegend;\n }\n\n // In case not all the legends were replaced, we remove the placeholders.\n return cleanLegend;\n};\n\nexport const getWidgetsWithValue = (payload: any[]): IDashboardPanel[] => {\n return panelsConfiguration.map((panelItem: IDashboardPanel) => {\n const payloadData = payload.find(\n (panelT) =>\n panelT.title.toLowerCase().trim() ===\n panelItem.title.toLowerCase().trim()\n );\n return widgetDetailsToPanel(payloadData, panelItem);\n });\n};\n\nexport const widgetDetailsToPanel = (\n payloadData: any,\n panelItem: IDashboardPanel\n) => {\n if (!payloadData) {\n return panelItem;\n }\n\n const typeOfPayload = payloadData.type;\n\n switch (panelItem.type) {\n case widgetType.singleValue:\n case widgetType.simpleWidget:\n if (typeOfPayload === \"stat\" || typeOfPayload === \"singlestat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n\n if (elements === null) {\n elements = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const data = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data,\n };\n }\n break;\n case widgetType.pieChart:\n if (typeOfPayload === \"gauge\") {\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n let chartSeries = get(payloadData, \"targets\", []).filter(\n (seriesItem: any) => seriesItem !== null\n );\n\n const values = chartSeries.map((chartTarget: any) => {\n const resultMap =\n chartTarget.result && Array.isArray(chartTarget.result)\n ? chartTarget.result\n : [];\n\n const values = resultMap.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n const sortResult = values.sort(\n (value1: any[], value2: any[]) =>\n parseInt(value1[0][1]) - parseInt(value2[0][1])\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return {\n name: metricName,\n value: parseInt(value[1]),\n legend: chartTarget.legendFormat,\n };\n });\n\n return values;\n });\n\n const firstTarget =\n chartSeries[0].result && chartSeries[0].result.length > 0\n ? chartSeries[0].result[0].values\n : [];\n\n const totalValues = calculateMainValue(firstTarget, metricCalc);\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(totalValues[1])\n : totalValues[1];\n\n return {\n ...panelItem,\n data: values,\n innerLabel,\n };\n }\n break;\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n if (typeOfPayload === \"graph\") {\n let targets = get(payloadData, \"targets\", []);\n if (targets === null) {\n targets = [];\n }\n\n const series: any[] = [];\n const plotValues: any[] = [];\n\n targets.forEach(\n (\n targetMaster: { legendFormat: string; result: any[] },\n index: number\n ) => {\n // Add a new serie to plot variables in case it is not from multiple values\n let results = get(targetMaster, \"result\", []);\n const legendFormat = targetMaster.legendFormat;\n if (results === null) {\n results = [];\n }\n\n results.forEach((itemVals: { metric: object; values: any[] }) => {\n // Label Creation\n const labelName = constructLabelNames(\n itemVals.metric,\n legendFormat\n );\n const keyName = `key_${index}${labelName}`;\n\n // series creation with recently created label\n series.push({\n dataKey: keyName,\n keyLabel: labelName,\n lineColor: \"\",\n fillColor: \"\",\n });\n\n // we iterate over values and create elements\n let values = get(itemVals, \"values\", []);\n if (values === null) {\n values = [];\n }\n\n values.forEach((valInfo: any[]) => {\n const itemIndex = plotValues.findIndex(\n (element) => element.name === valInfo[0]\n );\n\n // Element not exists yet\n if (itemIndex === -1) {\n let itemToPush: any = { name: valInfo[0] };\n itemToPush[keyName] = valInfo[1];\n\n plotValues.push(itemToPush);\n } else {\n plotValues[itemIndex][keyName] = valInfo[1];\n }\n });\n });\n }\n );\n\n const sortedSeries = series.sort((series1: any, series2: any) => {\n if (series1.keyLabel < series2.keyLabel) {\n return -1;\n }\n if (series1.keyLabel > series2.keyLabel) {\n return 1;\n }\n return 0;\n });\n\n const seriesWithColors = sortedSeries.map(\n (serialC: any, index: number) => {\n return {\n ...serialC,\n lineColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n fillColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n };\n }\n );\n\n const sortedVals = plotValues.sort(\n (value1: any, value2: any) => value1.name - value2.name\n );\n\n return {\n ...panelItem,\n widgetConfiguration: seriesWithColors,\n data: sortedVals,\n };\n }\n break;\n case widgetType.barChart:\n if (typeOfPayload === \"bargauge\") {\n let chartBars = get(payloadData, \"targets[0].result\", []);\n\n if (chartBars === null) {\n chartBars = [];\n }\n\n const sortFunction = (value1: any[], value2: any[]) =>\n value1[0] - value2[0];\n\n let values = [];\n if (panelItem.customStructure) {\n values = panelItem.customStructure.map((structureItem) => {\n const metricTake = chartBars.find((element: any) => {\n const metricKeyItem = Object.keys(element.metric);\n\n const metricName = element.metric[metricKeyItem[0]];\n\n return metricName === structureItem.originTag;\n });\n\n const elements = get(metricTake, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n\n return {\n name: structureItem.displayTag,\n a: parseInt(lastValue[1]),\n };\n });\n } else {\n // If no configuration is set, we construct the series for bar chart and return the element\n values = chartBars.map((elementValue: any) => {\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n\n const elements = get(elementValue, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n return { name: metricName, a: parseInt(lastValue[1]) };\n });\n }\n\n return {\n ...panelItem,\n data: values,\n };\n }\n break;\n case widgetType.singleRep:\n if (typeOfPayload === \"stat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n if (elements === null) {\n elements = [];\n }\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n let valuesForBackground = [];\n\n if (sortResult.length === 1) {\n valuesForBackground.push({ value: 0 });\n }\n\n sortResult.forEach((eachVal: any) => {\n valuesForBackground.push({ value: parseInt(eachVal[1]) });\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data: valuesForBackground,\n innerLabel,\n };\n }\n break;\n }\n\n return panelItem;\n};\n\nconst verifyNumeric = (item: string) => {\n return !isNaN(parseFloat(item));\n};\n\nexport const splitSizeMetric = (val: string) => {\n const splittedText = val.split(\" \");\n // Value is not a size metric, we return as common string\n\n const singleValue = () => {\n let vl = val;\n\n if (verifyNumeric(val)) {\n vl = representationNumber(parseFloat(val));\n }\n return {vl};\n };\n\n if (splittedText.length !== 2) {\n return singleValue();\n }\n\n if (!units.includes(splittedText[1])) {\n return singleValue();\n }\n\n return (\n \n {splittedText[0]}\n {splittedText[1]}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { ITabOption } from \"./types\";\n\ninterface ITabSelector {\n selectedTab: number;\n onChange: (newValue: number) => void;\n tabOptions: ITabOption[];\n}\n\nconst tabSubStyles = makeStyles({\n tabRoot: {\n height: \"40px\",\n borderBottom: \"1px solid #eaeaea\",\n },\n root: {\n width: \"120px\",\n backgroundColor: \"transparent\",\n paddingTop: 0,\n paddingBottom: 0,\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"#07193E\",\n height: \"40px\",\n },\n selected: {\n \"&.MuiTab-selected\": {\n backgroundColor: \"#F6F7F7 !important\",\n },\n \"&.MuiTab-wrapper\": {\n color: \"#07193E\",\n fontWeight: 600,\n },\n },\n indicator: {\n background:\n \"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;\",\n height: 2,\n },\n scroller: {\n maxWidth: 1185,\n position: \"relative\",\n \"&::after\": {\n content: '\" \"',\n backgroundColor: \"#EEF1F4\",\n height: 2,\n width: \"100%\",\n display: \"block\",\n },\n },\n});\n\nconst TabSelector = ({ selectedTab, onChange, tabOptions }: ITabSelector) => {\n const subStyles = tabSubStyles();\n\n return (\n \n , newValue: number) => {\n onChange(newValue);\n }}\n classes={{\n root: subStyles.tabRoot,\n indicator: subStyles.indicator,\n scroller: subStyles.scroller,\n }}\n >\n {tabOptions.map((option, index) => {\n let tabOptions: ITabOption = {\n label: option.label,\n };\n\n if (option.value) {\n tabOptions = { ...tabOptions, value: option.value };\n }\n\n if (option.disabled) {\n tabOptions = { ...tabOptions, disabled: option.disabled };\n }\n\n return (\n \n );\n })}\n \n \n );\n};\n\nexport default TabSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst BarChartTooltip = ({\n active,\n payload,\n label,\n barChartConfiguration,\n classes,\n}: any) => {\n if (active) {\n return (\n
\n
{label}
\n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
\n {pl.value}\n
\n
\n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(BarChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { Box } from \"@mui/material\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { openZoomPage } from \"../../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst ExpandGraphLink = ({ panelItem }: { panelItem: IDashboardPanel }) => {\n const dispatch = useAppDispatch();\n return (\n \n {\n dispatch(openZoomPage(panelItem));\n }}\n className={\"zoom-graph-icon\"}\n >\n \n \n \n );\n};\n\nexport default ExpandGraphLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Menu, MenuItem, Box } from \"@mui/material\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { DownloadIcon } from \"../../../icons\";\nimport { exportComponentAsPNG } from \"react-component-export-image\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../../src/store\";\nimport { setErrorSnackMessage } from \"../../../../src/systemSlice\";\ninterface IDownloadWidgetDataButton {\n title: any;\n componentRef: any;\n data: any;\n}\n\nconst DownloadWidgetDataButton = ({\n title,\n componentRef,\n data,\n}: IDownloadWidgetDataButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openDownloadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseDownload = () => {\n setAnchorEl(null);\n };\n const download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n };\n\n const dispatch = useAppDispatch();\n const onDownloadError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const convertToCSV = (objectToConvert: any) => {\n const array = [Object.keys(objectToConvert[0])].concat(objectToConvert);\n return array\n .map((it) => {\n return Object.values(it).toString();\n })\n .join(\"\\n\");\n };\n\n const widgetDataCSVFileName = () => {\n if (title !== null) {\n return (title + \"_\" + Date.now().toString() + \".csv\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n } else {\n return \"widgetData_\" + Date.now().toString() + \".csv\";\n }\n };\n\n const downloadAsCSV = () => {\n if (data !== null && data.length > 0) {\n download(widgetDataCSVFileName(), convertToCSV(data));\n } else {\n let err: ErrorResponseHandler;\n err = {\n errorMessage: \"Unable to download widget data\",\n detailedError: \"Unable to download widget data - data not available\",\n };\n onDownloadError(err);\n }\n };\n\n const downloadAsPNG = () => {\n if (title !== null) {\n const pngFileName = (title + \"_\" + Date.now().toString() + \".png\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n } else {\n const pngFileName = \"widgetData_\" + Date.now().toString() + \".png\";\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n }\n };\n\n return (\n \n \n \n {\n handleCloseDownload();\n }}\n >\n {\n downloadAsCSV();\n }}\n >\n Download as CSV\n \n {\n downloadAsPNG();\n }}\n >\n Download as PNG\n \n \n \n \n );\n};\n\nexport default DownloadWidgetDataButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState, useRef } from \"react\";\n\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { useMediaQuery, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport { useTheme } from \"@mui/styles\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\n\ninterface IBarChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n zoomActivated?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n });\n\nconst CustomizedAxisTick = ({ y, payload }: any) => {\n return (\n \n {payload.value}\n \n );\n};\n\nconst BarChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n zoomActivated = false,\n}: IBarChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n const [hover, setHover] = useState(false);\n const componentRef = useRef();\n\n const onHover = () => {\n setHover(true);\n };\n const onStopHover = () => {\n setHover(false);\n };\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 dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const barChartConfiguration = result\n ? (result.widgetConfiguration as IBarChartConfiguration[])\n : [];\n\n let greatestIndex = 0;\n let currentValue = 0;\n\n if (barChartConfiguration.length === 1) {\n const dataGraph = barChartConfiguration[0];\n data.forEach((item: any, index: number) => {\n if (item[dataGraph.dataKey] > currentValue) {\n currentValue = item[dataGraph.dataKey];\n greatestIndex = index;\n }\n });\n }\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n return (\n \n {!zoomActivated && (\n \n \n
{title}
\n
\n \n {hover && }\n \n \n \n \n
\n )}\n {loading && (\n
\n \n
\n )}\n {!loading && (\n }\n className={\n zoomActivated ? classes.zoomChartCont : classes.contentContainer\n }\n >\n \n \n \n }\n tickLine={false}\n axisLine={false}\n width={150}\n hide={!biggerThanMd}\n style={{\n fontSize: \"12px\",\n fontWeight: 100,\n }}\n />\n {barChartConfiguration.map((bar) => (\n \n {barChartConfiguration.length === 1 ? (\n \n {data.map((_: any, index: number) => (\n \n ))}\n \n ) : null}\n \n ))}\n \n }\n />\n \n \n \n )}\n \n );\n};\n\nexport default withStyles(styles)(BarChartWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\n classes,\n}: any) => {\n if (active) {\n return (\n
\n
\n {getTimeFromTimestamp(label, true)}\n
\n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
\n \n {linearConfiguration[index].keyLabel}:{\" \"}\n {yAxisFormatter(pl.value)}\n \n
\n
\n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(LineChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState, useRef } from \"react\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Box, useMediaQuery, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport { useTheme } from \"@mui/styles\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\n\ninterface ILinearGraphWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string, var1: boolean, var2: boolean) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n 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 width: 40,\n height: 40,\n textAlign: \"center\",\n margin: \"15px auto\",\n },\n });\n\nconst LinearGraphWidget = ({\n classes,\n title,\n timeStart,\n timeEnd,\n propLoading,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string, var1: boolean, var2: boolean) => item,\n zoomActivated = false,\n}: ILinearGraphWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [hover, setHover] = useState(false);\n const [data, setData] = useState([]);\n const [csvData, setCsvData] = useState([]);\n const [dataMax, setDataMax] = useState(0);\n const [result, setResult] = useState(null);\n\n const componentRef = useRef();\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 let maxVal = 0;\n for (const dp of widgetsWithValue.data) {\n for (const key in dp) {\n if (key === \"name\") {\n continue;\n }\n let val = parseInt(dp[key]);\n\n if (isNaN(val)) {\n val = 0;\n }\n\n if (maxVal < val) {\n maxVal = val;\n }\n }\n }\n setDataMax(maxVal);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let intervalCount = Math.floor(data.length / 5);\n\n const onHover = () => {\n setHover(true);\n };\n const onStopHover = () => {\n setHover(false);\n };\n useEffect(() => {\n var dateFormatData = data;\n dateFormatData.forEach((element: any) => {\n var date = new Date(element.name * 1000);\n element.name = date;\n });\n setCsvData(dateFormatData);\n }, [data]);\n\n const linearConfiguration = result\n ? (result?.widgetConfiguration as ILinearGraphConfiguration[])\n : [];\n\n const CustomizedDot = (prop: any) => {\n const { cx, cy, index } = prop;\n\n if (index % 3 !== 0) {\n return null;\n }\n return ;\n };\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n let dspLongDate = false;\n\n if (zoomActivated) {\n dspLongDate = true;\n }\n\n return (\n \n {!zoomActivated && (\n \n \n
{title}
\n
\n \n {hover && }\n
\n \n \n \n \n )}\n \n {loading && }\n {!loading && (\n \n \n \n \n {areaWidget && (\n \n \n \n \n\n \n \n \n )}\n \n \n xAxisFormatter(value, dspLongDate, true)\n }\n interval={intervalCount}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n tickCount={10}\n stroke={\"#082045\"}\n />\n yAxisFormatter(value)}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n stroke={\"#082045\"}\n />\n {linearConfiguration.map((section, index) => {\n return (\n : false}\n />\n );\n })}\n \n }\n wrapperStyle={{\n zIndex: 5000,\n }}\n />\n \n \n \n {!areaWidget && (\n \n {zoomActivated && (\n \n Series\n
\n
\n
\n )}\n {biggerThanMd && (\n
\n {linearConfiguration.map((section, index) => {\n return (\n \n \n
\n {section.keyLabel}\n
\n
\n );\n })}\n \n )}\n
\n )}\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(LinearGraphWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Cell, Pie, PieChart, ResponsiveContainer } from \"recharts\";\nimport { IPieChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IDashboardPanel } from \"../types\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport get from \"lodash/get\";\nimport api from \"../../../../../common/api\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\ninterface IPieChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n pieChartLabel: {\n fontSize: 60,\n color: \"#07193E\",\n fontWeight: \"bold\",\n width: \"100%\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n chartContainer: {\n width: \"100%\",\n height: 140,\n },\n });\n\nconst PieChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: IPieChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [dataInner, setDataInner] = useState([]);\n const [dataOuter, setDataOuter] = 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 setDataInner(widgetsWithValue.data);\n setDataOuter(widgetsWithValue.dataOuter as object[]);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const pieChartConfiguration = result\n ? (result.widgetConfiguration as IPieChartConfiguration)\n : [];\n const middleLabel = result?.innerLabel;\n\n const innerColors = get(pieChartConfiguration, \"innerChart.colorList\", []);\n const outerColors = get(pieChartConfiguration, \"outerChart.colorList\", []);\n\n return (\n
\n
{title}
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n
\n \n {middleLabel && splitSizeMetric(middleLabel)}\n \n
\n \n \n {dataOuter && (\n \n {dataOuter.map((entry, index) => (\n \n ))}\n \n )}\n {dataInner && (\n \n {dataInner.map((entry, index) => {\n return (\n \n );\n })}\n \n )}\n \n \n
\n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(PieChartWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\ninterface ISimpleWidget {\n classes: any;\n iconWidget: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n apiPrefix: string;\n renderFn?: undefined | null | ((arg: Record) => any);\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainWidgetContainer: {\n display: \"inline-flex\",\n color: \"#072A4D\",\n alignItems: \"center\",\n },\n icon: {\n color: \"#072A4D\",\n fill: \"#072A4D\",\n marginRight: 5,\n marginLeft: 12,\n },\n widgetLabel: {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n marginRight: 10,\n },\n widgetValue: {\n marginRight: 25,\n },\n });\n\nconst SimpleWidget = ({\n classes,\n iconWidget,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n renderFn,\n}: ISimpleWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(\"\");\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 setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n if (renderFn) {\n return renderFn({\n valueToRender: data,\n loading,\n title,\n id: panelItem.id,\n iconWidget: iconWidget,\n });\n }\n return (\n \n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n {iconWidget ? iconWidget : null}\n {title}: \n {data}\n \n )}\n
\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SimpleWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\nconst DashboardItemBox = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default DashboardItemBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Tooltip } from \"@mui/material\";\nimport Loader from \"../../../Common/Loader/Loader\";\n\nconst NumericStatCard = ({\n value,\n label = \"\",\n icon = null,\n loading = false,\n}: {\n value: string | number;\n label?: any;\n icon?: any;\n loading?: boolean;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n \n {value}\n \n \n \n \n {}\n {loading ? (\n \n ) : (\n icon\n )}\n \n \n );\n };\n\n return (\n \n {getContent()}\n \n );\n};\n\nexport default NumericStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { BucketsIcon } from \"../../../../../icons\";\n\nconst BucketsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default BucketsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { TotalObjectsIcon } from \"../../../../../icons\";\n\nconst ObjectsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default ObjectsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { representationNumber } from \"../../../../../common/utils\";\nimport api from \"../../../../../common/api\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\nimport BucketsCountItem from \"./BucketsCountItem\";\nimport ObjectsCountItem from \"./ObjectsCountItem\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleRepWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n color?: string;\n fillColor?: string;\n apiPrefix: string;\n}\n\nconst SingleRepWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: ISingleRepWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\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 setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let repNumber = \"\";\n\n if (result) {\n const resultRep = parseInt(result.innerLabel || \"0\");\n\n if (!isNaN(resultRep)) {\n repNumber = representationNumber(resultRep);\n } else {\n repNumber = \"0\";\n }\n }\n\n const renderById = (id: number) => {\n if (id === 66) {\n return (\n \n \n \n );\n }\n if (id === 44) {\n return (\n \n \n \n );\n }\n\n return null;\n };\n\n return renderById(panelItem.id);\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default connector(SingleRepWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../../common/api\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleValueWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n classes: any;\n apiPrefix: string;\n renderFn?: (arg: Record) => any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n metric: {\n fontSize: 60,\n lineHeight: 1,\n color: \"#07193E\",\n fontWeight: 700,\n },\n titleElement: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: 700,\n },\n containerAlignment: {\n display: \"flex\",\n height: 140,\n flexDirection: \"column\",\n justifyContent: \"center\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n });\n\nconst SingleValueWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n classes,\n apiPrefix,\n renderFn,\n}: ISingleValueWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(\"\");\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 setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const valueToRender = splitSizeMetric(data);\n\n if (renderFn) {\n return renderFn({ valueToRender, loading, title, id: panelItem.id });\n }\n return (\n
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n
{splitSizeMetric(data)}
\n
{title}
\n
\n )}\n
\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SingleValueWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { IDashboardPanel } from \"../types\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\n\nimport {\n calculateBytes,\n capacityColors,\n niceBytesInt,\n} from \"../../../../../common/utils\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { ReportedUsageIcon } from \"../../../../../icons\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst CapacityItem = ({\n value,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const [totalUsableFree, setTotalUsableFree] = useState(0);\n const [totalUsableFreeRatio, setTotalUsableFreeRatio] = useState(0);\n const [totalUsed, setTotalUsed] = useState(0);\n const [totalUsable, setTotalUsable] = useState(0);\n\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/${value.id}/?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, value);\n\n let tUsable = 0;\n let tUsed = 0;\n let tFree = 0;\n\n widgetsWithValue.data.forEach((eachArray: any[]) => {\n eachArray.forEach((itemSum) => {\n switch (itemSum.legend) {\n case \"Total Usable\":\n tUsable += itemSum.value;\n break;\n case \"Used Space\":\n tUsed += itemSum.value;\n break;\n case \"Usable Free\":\n tFree += itemSum.value;\n break;\n }\n });\n });\n\n const freeRatio = Math.round((tFree / tUsable) * 100);\n\n setTotalUsableFree(tFree);\n setTotalUsableFreeRatio(freeRatio);\n setTotalUsed(tUsed);\n setTotalUsable(tUsable);\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, value, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const usedConvert = calculateBytes(totalUsed, true, false);\n\n const plotValues = [\n {\n value: totalUsableFree,\n color: \"#D6D6D6\",\n label: \"Usable Available Space\",\n },\n {\n value: totalUsed,\n color: capacityColors(totalUsed, totalUsable),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n Capacity\n \n \n \n {`${totalUsableFreeRatio}%`}\n
\n \n Free\n \n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n \n \n \n \n Used:\n \n \n
{usedConvert.total}
\n
{usedConvert.unit}
\n \n \n
Of: {niceBytesInt(totalUsable)}
\n \n \n\n \n \n {loading ? (\n \n ) : (\n \n )}\n \n \n \n \n );\n};\n\nexport default CapacityItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { SuccessIcon } from \"../../../icons\";\nimport Loader from \"../Common/Loader/Loader\";\n\nconst TimeStatItem = ({\n icon,\n label,\n value,\n loading = false,\n}: {\n icon: any;\n label: any;\n value: string;\n loading?: boolean;\n}) => {\n return (\n \n {loading ? : icon}\n \n {label}\n \n {value}\n {value !== \"n/a\" ? : null}\n \n );\n};\n\nexport default TimeStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst HealActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default HealActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\nimport { SimpleWidgetRenderProps } from \"./HealActivityRenderer\";\n\nconst ScanActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default ScanActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst UptimeActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n Uptime}\n value={valueToRender}\n />\n \n );\n};\n\nexport default UptimeActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport BarChartWidget from \"./Widgets/BarChartWidget\";\nimport LinearGraphWidget from \"./Widgets/LinearGraphWidget\";\nimport PieChartWidget from \"./Widgets/PieChartWidget\";\nimport SimpleWidget from \"./Widgets/SimpleWidget\";\nimport SingleRepWidget from \"./Widgets/SingleRepWidget\";\nimport SingleValueWidget from \"./Widgets/SingleValueWidget\";\nimport CapacityItem from \"./Widgets/CapacityItem\";\nimport DashboardItemBox from \"../DashboardItemBox\";\nimport HealActivityRenderer, {\n SimpleWidgetRenderProps,\n} from \"./Widgets/HealActivityRenderer\";\nimport ScanActivityRenderer from \"./Widgets/ScanActivityRenderer\";\nimport UptimeActivityRenderer from \"./Widgets/UptimeActivityRenderer\";\n\nexport const componentToUse = (\n value: IDashboardPanel,\n timeStart: any,\n timeEnd: any,\n loading: boolean,\n apiPrefix: string,\n zoomActivated: boolean = false\n) => {\n switch (value.type) {\n case widgetType.singleValue:\n return (\n \n );\n case widgetType.simpleWidget:\n let renderFn;\n let CmpToRender: any = null;\n if (value.id === 80) {\n CmpToRender = HealActivityRenderer;\n } else if (value.id === 81) {\n CmpToRender = ScanActivityRenderer;\n } else if (value.id === 1) {\n CmpToRender = UptimeActivityRenderer;\n }\n\n if ([80, 81, 1].includes(value.id)) {\n renderFn = ({\n valueToRender,\n loading,\n title,\n id,\n iconWidget,\n }: SimpleWidgetRenderProps) => {\n return (\n \n );\n };\n }\n return (\n \n );\n case widgetType.pieChart:\n if (value.id === 50) {\n return (\n \n \n \n );\n }\n return (\n \n );\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n return (\n \n );\n case widgetType.barChart:\n return (\n \n );\n case widgetType.singleRep:\n const fillColor = value.fillColor ? value.fillColor : value.color;\n return (\n \n );\n default:\n return null;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IDashboardPanel } from \"./types\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { closeZoomPage } from \"../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IZoomWidget {\n widgetRender: number;\n value: IDashboardPanel | null;\n modalOpen: boolean;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst ZoomWidget = ({\n value,\n modalOpen,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IZoomWidget) => {\n const dispatch = useAppDispatch();\n if (!value) {\n return null;\n }\n\n return (\n {\n dispatch(closeZoomPage());\n }}\n modalOpen={modalOpen}\n wideLimit={false}\n noContentPadding\n >\n \n {componentToUse(value, timeStart, timeEnd, true, apiPrefix, true)}\n \n \n );\n};\n\nexport default ZoomWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box } from \"@mui/material\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type DLayoutColumnProps = {\n componentId: number;\n sx?: SxProps;\n};\nexport type DLayoutRowProps = {\n sx?: SxProps;\n columns: DLayoutColumnProps[];\n};\n\nexport const summaryPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n minWidth: 0,\n display: \"grid\",\n gridTemplateColumns: {\n md: \"1fr 1fr 1fr 1fr\",\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 66,\n },\n {\n componentId: 44,\n },\n {\n componentId: 500,\n },\n {\n componentId: 501,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0, // important to avoid css grid blow out.\n gridTemplateColumns: {\n md: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 50,\n },\n {\n componentId: 502,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n md: \"1fr 1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 80,\n },\n {\n componentId: 81,\n },\n {\n componentId: 1,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 68,\n },\n {\n componentId: 52,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 63,\n },\n {\n componentId: 70,\n },\n ],\n },\n];\n\nexport const trafficPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 60,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 71,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n {\n componentId: 17,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 73,\n },\n ],\n },\n];\n\nexport const resourcesPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 76,\n },\n {\n componentId: 77,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 82,\n },\n {\n componentId: 74,\n },\n ],\n },\n];\nexport const resourcesPanelsLayoutAdvanced: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 11,\n },\n {\n componentId: 8,\n },\n ],\n },\n];\n\nexport const RowPanelLayout = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Card, CardHeader } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport React, { Fragment } from \"react\";\nimport { widgetCommon } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport interface ISubInterface {\n message: string;\n fontWeight?: \"normal\" | \"bold\";\n}\n\ninterface ICommonCard {\n title: string;\n metricValue: any;\n metricUnit?: string;\n subMessage?: ISubInterface;\n moreLink?: string;\n rightComponent?: any;\n extraMargin?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n cardRoot: {\n ...widgetCommon.singleValueContainer,\n \"&.MuiPaper-root\": {\n borderRadius: 10,\n },\n },\n metricText: {\n fontSize: 70,\n lineHeight: 1.1,\n color: \"#07193E\",\n fontWeight: \"bold\",\n },\n unitText: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: \"normal\",\n },\n subHearderContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n subMessage: {\n fontSize: 10,\n color: \"#767676\",\n \"&.bold\": {\n fontWeight: \"bold\",\n },\n },\n headerContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n viewAll: {\n fontSize: 10,\n color: \"#C83B51\",\n textTransform: \"capitalize\",\n\n \"& a, & a:hover, & a:visited, & a:active\": {\n color: \"#C83B51\",\n },\n },\n extraMargin: {\n margin: \"10px 20px 10px 0\",\n },\n });\n\nconst cardSubStyles = makeStyles({\n root: { backgroundColor: \"#fff\", padding: 0 },\n title: {\n ...widgetCommon.titleContainer,\n },\n content: {\n maxWidth: \"100%\",\n },\n});\n\nconst CommonCard = ({\n title,\n metricValue,\n metricUnit,\n subMessage,\n moreLink,\n rightComponent,\n extraMargin = false,\n classes,\n}: ICommonCard) => {\n const subStyles = cardSubStyles();\n const SubHeader = () => {\n return (\n \n
\n
\n
\n \n {metricValue}\n {metricUnit}\n \n
\n {subMessage && (\n \n {subMessage.message}\n
\n )}\n
\n
{rightComponent}
\n \n
\n );\n };\n\n const Header = () => {\n return (\n \n
\n {title}\n {moreLink && (\n \n \n View All\n \n \n )}\n
\n
\n );\n };\n\n return (\n \n \n {metricValue !== \"\" && (\n }\n subheader={\n \n \n \n }\n classes={{\n root: subStyles.root,\n title: subStyles.title,\n content: subStyles.content,\n }}\n />\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(CommonCard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CommonCard from \"../CommonCard\";\n\ninterface IMergedWidgets {\n title: string;\n leftComponent: any;\n rightComponent: any;\n}\n\nconst MergedWidgets = ({\n title,\n leftComponent,\n rightComponent,\n}: IMergedWidgets) => {\n return (\n \n \n \n );\n};\n\nexport default MergedWidgets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IDashboardPanel } from \"../types\";\nimport Loader from \"../../../Common/Loader/Loader\";\n\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst EntityStateStatItem = ({\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n statLabel,\n}: {\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n statLabel: any;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(\"\");\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 setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let toRender = loading ? (\n \n \n \n ) : (\n \n {data}\n {statLabel}\n \n );\n\n return toRender;\n};\n\nexport default EntityStateStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\nconst DualStatCard = ({\n statItemLeft = null,\n statItemRight = null,\n icon = null,\n label = \"\",\n}: {\n statItemLeft: any;\n statItemRight: any;\n icon: any;\n label: string;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n {statItemLeft}\n {statItemRight}\n \n \n \n {icon}\n \n \n );\n };\n\n return (\n \n {getContent()}\n \n );\n};\n\nexport default DualStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport EntityStateStatItem from \"./EntityStateStatItem\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon, DrivesIcon, ServersIcon } from \"../../../../../icons\";\nimport DualStatCard from \"./DualStatCard\";\nimport { IDashboardPanel } from \"../types\";\n\nconst EntityStateItemRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const lStatItem = (\n \n \n
Online
\n \n }\n />\n );\n const rStatItem = (\n \n \n
Offline
\n \n }\n />\n );\n\n let statIcon = null;\n let statLabel = \"\";\n if (id === 500) {\n statIcon = ;\n statLabel = \"Servers\";\n } else if (id === 501) {\n statIcon = ;\n statLabel = \"Drives\";\n }\n\n return (\n \n );\n};\nexport default EntityStateItemRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { NetworkGetIcon } from \"../../../../../icons\";\n\nconst NetworkGetItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n \n GET\n \n {loading ? (\n \n ) : (\n \n )}\n \n \n {value}\n \n \n );\n};\n\nexport default NetworkGetItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport Loader from \"../../../Common/Loader/Loader\";\nimport { NetworkPutIcon } from \"../../../../../icons\";\n\nconst NetworkPutItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n \n PUT\n \n {loading ? (\n \n ) : (\n \n )}\n \n \n {value}\n \n \n );\n};\n\nexport default NetworkPutItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel } from \"../types\";\nimport { Box } from \"@mui/material\";\nimport { SpeedtestIcon } from \"../../../../../icons\";\nimport SingleValueWidget from \"./SingleValueWidget\";\nimport NetworkGetItem from \"./NetworkGetItem\";\nimport NetworkPutItem from \"./NetworkPutItem\";\n\nconst NetworkItem = ({\n value,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [] } = value;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const rightCmp = (\n {\n return (\n \n );\n }}\n />\n );\n const leftCmp = (\n {\n return (\n \n );\n }}\n />\n );\n\n return (\n \n \n Network\n \n \n \n {leftCmp}\n \n \n \n \n {rightCmp}\n \n \n \n \n \n \n );\n};\n\nexport default NetworkItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { componentToUse } from \"../widgetUtils\";\nimport MergedWidgets from \"../MergedWidgets\";\nimport { IDashboardPanel } from \"../types\";\nimport EntityStateItemRenderer from \"./EntityStateItemRenderer\";\nimport NetworkItem from \"./NetworkItem\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\n\nconst MergedWidgetsRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], title = \"\", id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const renderById = () => {\n if ([500, 501].includes(id)) {\n return (\n \n \n \n );\n }\n\n if (id === 502) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n };\n\n return renderById();\n};\n\nexport default MergedWidgetsRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport {\n actionsTray,\n widgetContainerCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"./types\";\nimport { getWidgetsWithValue, panelsConfiguration } from \"./utils\";\nimport { TabPanel } from \"../../../shared/tabs\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\n\nimport TabSelector from \"../../Common/TabSelector/TabSelector\";\nimport { componentToUse } from \"./widgetUtils\";\nimport ZoomWidget from \"./ZoomWidget\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport {\n DLayoutColumnProps,\n DLayoutRowProps,\n resourcesPanelsLayout,\n resourcesPanelsLayoutAdvanced,\n RowPanelLayout,\n summaryPanelsLayout,\n trafficPanelsLayout,\n} from \"./Widgets/LayoutUtil\";\nimport MergedWidgetsRenderer from \"./Widgets/MergedWidgetsRenderer\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\ninterface IPrDashboard {\n classes?: any;\n apiPrefix?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...widgetContainerCommon,\n dashboardRow: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n flexWrap: \"wrap\",\n },\n });\n\nconst PrDashboard = ({ apiPrefix = \"admin\" }: IPrDashboard) => {\n const dispatch = useAppDispatch();\n const zoomOpen = useSelector(\n (state: AppState) => state.dashboard.zoom.openZoom\n );\n const zoomWidget = useSelector(\n (state: AppState) => state.dashboard.zoom.widgetRender\n );\n\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const [loading, setLoading] = useState(true);\n const [panelInformation, setPanelInformation] =\n useState(panelsConfiguration);\n const [curTab, setCurTab] = useState(0);\n\n const getPanelDetails = (id: number) => {\n return panelInformation.find((panel) => panel.id === id);\n };\n\n const fetchUsage = useCallback(() => {\n let stepCalc = 0;\n\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?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 if (res.widgets) {\n const widgetsWithValue = getWidgetsWithValue(res.widgets);\n setPanelInformation(widgetsWithValue);\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage:\n \"Widget information could not be retrieved at this time. Please try again\",\n detailedError: \"\",\n })\n );\n }\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }, [timeStart, timeEnd, dispatch, apiPrefix]);\n\n const triggerLoad = () => {\n setLoading(true);\n };\n\n useEffect(() => {\n if (loading) {\n fetchUsage();\n }\n }, [loading, fetchUsage]);\n\n const renderCmpByConfig = (\n panelInfo: IDashboardPanel | undefined,\n key: string\n ) => {\n return (\n \n {panelInfo ? (\n \n \n {panelInfo.mergedPanels ? (\n \n ) : (\n componentToUse(\n panelInfo,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n zoomOpen\n )\n )}\n \n \n ) : null}\n \n );\n };\n\n const renderPanelItems = (layoutRows: DLayoutRowProps[]) => {\n return layoutRows.reduce((prev: any[], rowItem, rIdx) => {\n const { columns = [] } = rowItem;\n const cellItems: any[] = columns.map(\n (cellItem: DLayoutColumnProps, colIdx: number) => {\n const panelInfo = getPanelDetails(cellItem.componentId);\n return renderCmpByConfig(panelInfo, `${rIdx}-${colIdx}`);\n }\n );\n const rowConfig = (\n \n {cellItems}\n \n );\n return [...prev, rowConfig];\n }, []);\n };\n\n const renderSummaryPanels = () => {\n return renderPanelItems(summaryPanelsLayout);\n };\n\n const renderTrafficPanels = () => {\n return renderPanelItems(trafficPanelsLayout);\n };\n\n const renderResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayout);\n };\n\n const renderAdvancedResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayoutAdvanced);\n };\n\n return (\n \n {zoomOpen && (\n \n )}\n\n \n {\n setCurTab(newValue);\n }}\n tabOptions={[\n { label: \"Usage\" },\n { label: \"Traffic\" },\n { label: \"Resources\" },\n ]}\n />\n \n \n \n \n \n \n \n {panelInformation.length ? renderSummaryPanels() : null}\n \n \n \n \n {panelInformation.length ? renderTrafficPanels() : null}\n \n \n \n \n {panelInformation.length ? renderResourcesPanels() : null}\n

\n Advanced\n

\n {panelInformation.length ? renderAdvancedResourcesPanels() : null}\n
\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(PrDashboard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ServerInfo } from \"../types\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon } from \"../../../../icons\";\nimport get from \"lodash/get\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n getDriveStatusColor,\n getNetworkStatusColor,\n serverStatusColor,\n} from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n server: ServerInfo;\n index: number;\n}\n\nconst ServerStatItem = ({\n label = \"\",\n value = \"\",\n statusColor = \"\",\n hasStatus = false,\n}: {\n label?: string;\n value?: any;\n hasStatus?: boolean;\n statusColor: string | undefined;\n}) => {\n return (\n \n \n
\n {value}{\" \"}\n \n {hasStatus ? (\n \n \n \n ) : (\n \n )}\n \n
\n
{label}
\n \n \n );\n};\n\nconst ServerInfoItem = ({ server }: ICardProps) => {\n const networkKeys = Object.keys(get(server, \"network\", {}));\n const networkTotal = networkKeys.length;\n const totalDrives = server.drives ? server.drives.length : 0;\n const activeNetwork = networkKeys.reduce((acc: number, currValue: string) => {\n const item = server.network[currValue];\n if (item === \"online\") {\n return acc + 1;\n }\n return acc;\n }, 0);\n const activeDisks = server.drives\n ? server.drives.filter((element) => element.state === \"ok\").length\n : 0;\n return (\n \n \n \n \n {server.endpoint || \"\"}\n \n {server?.state && (\n \n \n \n )}\n \n\n \n \n \n\n \n \n \n Version:\n {server.version ? server.version : \"N/A\"}\n \n }\n />\n \n \n );\n};\nexport default withStyles(styles)(ServerInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IDriveInfo } from \"../types\";\nimport {\n capacityColors,\n niceBytes,\n niceBytesInt,\n} from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CircleIcon } from \"../../../../icons\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { STATUS_COLORS } from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n drive: IDriveInfo;\n}\n\nconst driveStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"ok\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\n\nconst DriveInfoItem = ({ drive }: ICardProps) => {\n const totalSpace = drive.totalSpace || 0;\n const usedSpace = drive.usedSpace || 0;\n\n const freeSpace = totalSpace - usedSpace;\n\n const plotValues = [\n { value: freeSpace, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: drive.usedSpace,\n color: capacityColors(usedSpace, totalSpace),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n \n
{drive.endpoint || \"\"}
\n {drive.state && }\n \n\n \n \n
\n \n {drive.usedSpace ? niceBytesInt(drive.usedSpace) : \"-\"}\n \n
\n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n
\n
\n\n \n \n
\n {niceBytes(\n drive.totalSpace ? drive.totalSpace.toString() : \"0\"\n )}\n
\n \n \n\n \n
\n {niceBytes(drive.usedSpace ? drive.usedSpace.toString() : \"0\")}\n
\n \n \n \n
\n {niceBytes(\n drive.availableSpace ? drive.availableSpace.toString() : \"0\"\n )}\n
\n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(DriveInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport Collapse from \"@mui/material/Collapse\";\nimport { ServerInfo } from \"../types\";\nimport ServerInfoItem from \"./ServerInfoItem\";\nimport { Box } from \"@mui/material\";\nimport DriveInfoItem from \"./DriveInfoItem\";\nimport {\n MenuCollapsedIcon,\n MenuExpandedIcon,\n} from \"../../../../icons/SidebarMenus\";\n\nconst ServersList = ({ data }: { data: ServerInfo[] }) => {\n const [expanded, setExpanded] = React.useState(\n data.length > 1 ? \"\" : data[0].endpoint + \"-0\"\n );\n\n const handleClick = (key: string) => {\n setExpanded(key);\n };\n\n return (\n \n \n Servers ({data.length})\n \n \n {data.map((serverInfo, index) => {\n const key = `${serverInfo.endpoint}-${index}`;\n const isExpanded = expanded === key;\n return (\n \n {\n if (!isExpanded) {\n handleClick(key);\n } else {\n handleClick(\"\");\n }\n }}\n className={isExpanded ? \"expanded\" : \"\"}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n border: \"1px solid #f1f1f1\",\n padding: \"3px 10px 3px 10px\",\n\n \"&:hover\": {\n background: \"#bebbbb0d\",\n },\n }}\n >\n \n \n {isExpanded ? (\n \n ) : (\n \n )}\n \n \n {isExpanded ? (\n \n \n Drives ({serverInfo.drives.length})\n \n\n \n {serverInfo.drives.map((driveInfo, index) => {\n return (\n \n );\n })}\n \n \n ) : null}\n \n );\n })}\n \n \n );\n};\n\nexport default ServersList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\n\nconst CounterCard = ({\n counterValue,\n label = \"\",\n icon = null,\n actions = null,\n loading = false,\n}: {\n counterValue: string | number;\n label?: any;\n icon?: any;\n actions?: any;\n loading?: boolean;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n \n {counterValue}\n \n \n \n \n {icon}\n\n \n {actions}\n \n \n \n \n );\n};\n\nexport default CounterCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\n\nconst ReportedUsage = ({\n usageValue,\n total,\n unit,\n}: {\n usageValue: string;\n total: number | string;\n unit: string;\n}) => {\n const plotValues = [\n { value: total, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: usageValue,\n color: \"#073052\",\n label: \"Used Space\",\n },\n ];\n\n return (\n \n \n
\n Reported Usage\n
\n\n \n \n {total}\n \n \n \n
\n\n \n \n \n
\n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n
\n
\n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n ArrowRightIcon,\n BucketsIcon,\n DrivesIcon,\n HealIcon,\n PrometheusErrorIcon,\n ServersIcon,\n TotalObjectsIcon,\n UptimeIcon,\n} from \"../../../../icons\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { calculateBytes, representationNumber } from \"../../../../common/utils\";\nimport { IDriveInfo, Usage } from \"../types\";\nimport StatusCountCard from \"./StatusCountCard\";\nimport groupBy from \"lodash/groupBy\";\nimport ServersList from \"./ServersList\";\nimport CounterCard from \"./CounterCard\";\nimport ReportedUsage from \"./ReportedUsage\";\nimport { DiagnosticsMenuIcon } from \"../../../../icons/SidebarMenus\";\nimport { Button } from \"mds\";\nimport { Link } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport TimeStatItem from \"../TimeStatItem\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst BoxItem = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\ninterface IDashboardProps {\n usage: Usage | null;\n}\n\nconst getServersList = (usage: Usage | null) => {\n if (usage !== null) {\n return usage.servers.sort(function (a, b) {\n const nameA = a.endpoint.toLowerCase();\n const nameB = b.endpoint.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n};\n\nconst prettyUsage = (usage: string | undefined) => {\n if (usage === undefined) {\n return { total: \"0\", unit: \"Mi\" };\n }\n\n return calculateBytes(usage);\n};\n\nconst BasicDashboard = ({ usage }: IDashboardProps) => {\n const usageValue = usage && usage.usage ? usage.usage.toString() : \"0\";\n const usageToRepresent = prettyUsage(usageValue);\n\n const { lastScan = \"n/a\", lastHeal = \"n/a\", upTime = \"n/a\" } = usage || {};\n\n const serverList = getServersList(usage || null);\n\n let allDrivesArray: IDriveInfo[] = [];\n\n serverList.forEach((server) => {\n const drivesInput = server.drives.map((drive) => {\n return drive;\n });\n\n allDrivesArray = [...allDrivesArray, ...drivesInput];\n });\n\n const serversGroup = groupBy(serverList, \"state\");\n const { offline: offlineServers = [], online: onlineServers = [] } =\n serversGroup;\n const drivesGroup = groupBy(allDrivesArray, \"state\");\n const { offline: offlineDrives = [], ok: onlineDrives = [] } = drivesGroup;\n\n return (\n \n \n \n {usage?.prometheusNotReady && (\n }\n title={\"We can't retrieve advanced metrics at this time\"}\n help={\n \n MinIO Dashboard will display basic metrics as we couldn't\n connect to Prometheus successfully.\n

\n Please try again in a few minutes. If the problem persists,\n you can review your configuration and confirm that Prometheus\n server is up and running.\n
\n }\n />\n )}\n\n {!usage?.prometheusNotReady && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n \n MinIO Dashboard will display basic metrics as we couldn’t\n connect to Prometheus successfully. Please try again in a\n few minutes. If the problem persists, you can review your\n configuration and confirm that Prometheus server is up and\n running.\n \n theme.colors.link,\n },\n }}\n >\n \n Read more about Prometheus on our Docs site.\n \n
\n \n }\n />\n )}\n \n\n \n \n \n }\n counterValue={usage ? representationNumber(usage.buckets) : 0}\n actions={\n \n \n {}}\n label={\"Browse\"}\n icon={}\n variant={\"regular\"}\n style={{\n padding: 5,\n height: 30,\n fontSize: 14,\n }}\n />\n \n \n }\n />\n \n \n }\n counterValue={usage ? representationNumber(usage.objects) : 0}\n />\n \n\n \n }\n />\n \n \n }\n />\n \n\n \n \n\n \n }\n label={\n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={lastHeal}\n />\n }\n label={\n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={lastScan}\n />\n }\n label={\"Uptime\"}\n value={upTime}\n />\n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default BasicDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport get from \"lodash/get\";\nimport PrDashboard from \"./Prometheus/PrDashboard\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport Grid from \"@mui/material/Grid\";\nimport { containerForHeader } from \"../Common/FormComponents/common/styleLibrary\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { LinearProgress } from \"@mui/material\";\nimport api from \"../../../common/api\";\nimport { Usage } from \"./types\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport BasicDashboard from \"./BasicDashboard/BasicDashboard\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDashboardSimple {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst Dashboard = ({ classes }: IDashboardSimple) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [basicResult, setBasicResult] = useState(null);\n\n const fetchUsage = useCallback(() => {\n api\n .invoke(\"GET\", `/api/v1/admin/info`)\n .then((res: Usage) => {\n setBasicResult(res);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }, [setBasicResult, setLoading, dispatch]);\n\n useEffect(() => {\n if (loading) {\n fetchUsage();\n }\n }, [loading, fetchUsage]);\n\n const widgets = get(basicResult, \"widgets\", null);\n\n return (\n \n \n {loading ? (\n \n \n \n \n \n ) : (\n \n {widgets !== null ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(Dashboard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: any;\n value: any;\n}\n\nexport const TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n\n return (\n