,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { ModalBox, Snackbar } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport MainError from \"../MainError/MainError\";\n\ninterface IModalProps {\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n titleIcon?: React.ReactNode;\n iconColor?: \"default\" | \"delete\" | \"accept\";\n sx?: CSSObject;\n}\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n wideLimit = true,\n titleIcon = null,\n iconColor = \"default\",\n sx,\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 let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (message === \"\" || (message && message.length < 5)) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default ModalWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport {\n CodeIcon,\n CompressIcon,\n ConsoleIcon,\n FindReplaceIcon,\n FirstAidIcon,\n KeyIcon,\n LogsIcon,\n PendingItemsIcon,\n PublicIcon,\n} from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value || \"\",\n overrideEnv: envItem.env_override.name || \"\",\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteMultipleServiceAccounts(selectedSAs)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["ACCOUNT_TABLE_COLUMNS","label","elementKey","renderFunction","expTime","fmtDate","DateTime","fromISO","toUTC","toFormat","_jsx","title","children","status","_ref","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","loading","setLoading","useState","policyDefinition","setPolicyDefinition","name","setName","description","setDescription","expiry","setExpiry","setStatus","useEffect","api","serviceAccounts","getServiceAccount","then","res","saInfo","data","expiration","accountStatus","policy","catch","err","setModalErrorSnackMessage","errorToHandler","ModalWrapper","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","noValidate","autoComplete","onSubmit","e","setPolicy","newPolicy","preventDefault","updateServiceAccount","async","json","setErrorSnackMessage","_jsxs","Grid","container","item","xs","CodeMirrorWrapper","value","onChange","editorHeight","helptip","Fragment","target","href","Box","sx","marginBottom","marginTop","display","width","DateTimeInput","noLabelMinWidth","id","timeFormat","secondsSelector","InputBox","size","type","placeholder","alignItems","justifyContent","fontWeight","color","gap","style","padding","Switch","indicatorLabels","checked","modalStyleUtils","modalButtonBar","Button","variant","onClick","disabled","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","tooltip","mode","CodeEditor","helpTools","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","helpTip","helpTipPlacement","wideLimit","iconColor","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","setModalSnackMessage","message","detailedErrorMsg","ModalBox","widthLimit","MainError","isModal","Snackbar","closeSnackBar","autoHideDuration","condensed","configurationElements","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","FirstAidIcon","FindReplaceIcon","KeyIcon","ConsoleIcon","PendingItemsIcon","LogsIcon","fieldsConfigurations","region","required","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","key","closeDeleteModalAndRefresh","deleteOpen","loadingDelete","setLoadingDelete","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","deleteMultipleServiceAccounts","_","finally","confirmationContent","usersSort","a","b","accessKey","policySort","stringSort","policyDetailsSort","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","concat","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/12.fcd89e94.chunk.js b/web-app/build/static/js/12.fcd89e94.chunk.js
deleted file mode 100644
index 776f95c43..000000000
--- a/web-app/build/static/js/12.fcd89e94.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[12],{40012:(e,s,t)=>{t.r(s),t.d(s,{default:()=>R});var i=t(65043),n=t(33097),l=t.n(n),a=t(22166),r=t(73216),c=t(56629),o=t(53518),d=t(89923),u=t(77403),x=t(99161),h=t(77938),m=t(64159),p=t(39947),j=t(21383),f=t(25903),b=t(70579);const S=e=>{var s,t;let{versioningState:i={}}=e;return(0,b.jsxs)(d.azJ,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,b.jsx)(d.azJ,{sx:{fontWeight:"medium",display:"flex",gap:2},children:i.excludeFolders?(0,b.jsx)(f.A,{icon:i.excludeFolders?(0,b.jsx)(d.xhy,{style:{color:"green"}}):(0,b.jsx)(d.aaC,{}),label:(0,b.jsx)("label",{style:{textDecoration:"normal"},children:"Exclude Folders"})}):null}),null!==(s=i.excludedPrefixes)&&void 0!==s&&s.length?(0,b.jsxs)(d.azJ,{sx:{fontWeight:"medium",display:"flex",justifyItems:"end",placeItems:"flex-start",flexDirection:"column",gap:1},children:[(0,b.jsx)(d.azJ,{children:"Excluded Prefixes :"}),(0,b.jsx)("div",{style:{maxHeight:"200px",overflowY:"auto",placeItems:"flex-start",justifyItems:"end",flexDirection:"column",display:"flex"},children:null===(t=i.excludedPrefixes)||void 0===t?void 0:t.map((e=>(0,b.jsx)("div",{children:(0,b.jsx)("strong",{children:e.prefix})})))})]}):null]})};var g=t(72237);const T=e=>{let{disabled:s,onClick:t,...i}=e;return(0,b.jsx)(d.K0,{size:"small",disabled:s,onClick:t,...i,children:(0,b.jsx)(d.qUP,{})})},_=e=>{let{resourceName:s,iamScopes:t,secureCmpProps:i={},children:n}=e;return(0,b.jsx)(h.R,{scopes:t,resource:s,errorProps:{disabled:!0},...i,children:n})},O=e=>{let{isLoading:s=!0,resourceName:t="",iamScopes:i,secureCmpProps:n={},property:l=null,value:a=null,onEdit:r,disabled:c=!1,helpTip:o}=e;return(0,b.jsxs)(d.azJ,{sx:{display:"flex",alignItems:"baseline",justifyContent:"flex-start",gap:10},children:[(0,b.jsx)(d.mZW,{label:l,value:o?(0,b.jsx)(_,{resourceName:t,iamScopes:i,secureCmpProps:n,children:(0,b.jsx)(d.V7x,{placement:"left",content:o,children:(0,b.jsx)(d.t53,{isLoading:s,onClick:r,label:a,sx:{fontWeight:"bold",textTransform:"capitalize"},disabled:c})})}):(0,b.jsx)(_,{resourceName:t,iamScopes:i,secureCmpProps:n,children:(0,b.jsx)(d.t53,{isLoading:s,onClick:r,label:a,sx:{fontWeight:"bold",textTransform:"capitalize"},disabled:c})})}),(0,b.jsx)(_,{resourceName:t,iamScopes:i,secureCmpProps:n,children:(0,b.jsx)(T,{onClick:r,sx:{background:"#f8f8f8",marginLeft:"3px",top:3,"& .min-icon":{width:"16px",height:"16px"}},disabled:c})})]})};var E=t(56483);const C=e=>{let{bucketSize:s}=e;return(0,b.jsxs)(d.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,b.jsx)(d.fRK,{}),(0,b.jsxs)(d.azJ,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,b.jsx)("label",{style:{fontWeight:600},children:"Reported Usage:"}),(0,b.jsx)("label",{children:(0,E.nO)(s)})]})]})},y=e=>{let{quota:s}=e;return(0,b.jsxs)(d.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,b.jsx)(d.rod,{}),(0,b.jsxs)(d.azJ,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,b.jsxs)("label",{style:{fontWeight:600,textTransform:"capitalize"},children:[null===s||void 0===s?void 0:s.type," Quota"]}),(0,b.jsxs)("label",{children:[" ",(0,E.nO)(`${null===s||void 0===s?void 0:s.quota}`,!0)]})]})]})},I=(0,g.A)(i.lazy((()=>t.e(7659).then(t.bind(t,97659))))),N=(0,g.A)(i.lazy((()=>t.e(7515).then(t.bind(t,67515))))),k=(0,g.A)(i.lazy((()=>t.e(6654).then(t.bind(t,36654))))),A=(0,g.A)(i.lazy((()=>t.e(5311).then(t.bind(t,5311))))),v=(0,g.A)(i.lazy((()=>t.e(5809).then(t.bind(t,5809))))),z=(0,g.A)(i.lazy((()=>t.e(7264).then(t.bind(t,47264))))),R=()=>{var e;const s=(0,j.jL)(),t=(0,r.g)(),n=(0,a.d4)(p.Nx),g=(0,a.d4)(p.fT),T=(0,a.d4)(m.Rq),[_,E]=(0,i.useState)(null),[R,V]=(0,i.useState)("0"),[B,U]=(0,i.useState)(!1),[P,G]=(0,i.useState)(!1),[w,J]=(0,i.useState)(!1),[F,L]=(0,i.useState)(!0),[K,M]=(0,i.useState)(!0),[D,W]=(0,i.useState)(!0),[q,Y]=(0,i.useState)(!0),[Z,Q]=(0,i.useState)(!0),[$,H]=(0,i.useState)(!0),[X,ee]=(0,i.useState)(!0),[se,te]=(0,i.useState)(!0),[ie,ne]=(0,i.useState)(),[le,ae]=(0,i.useState)(!1),[re,ce]=(0,i.useState)(null),[oe,de]=(0,i.useState)(!1),[ue,xe]=(0,i.useState)(!1),[he,me]=(0,i.useState)(null),[pe,je]=(0,i.useState)(!1),[fe,be]=(0,i.useState)(!1),[Se,ge]=(0,i.useState)(!1),[Te,_e]=(0,i.useState)(!1);(0,i.useEffect)((()=>{s((0,m.ph)("bucket_detail_summary"))}),[]);const Oe=t.bucketName||"";let Ee="PRIVATE",Ce="";null!==g&&g.access&&g.definition&&(Ee=g.access,Ce=g.definition);const ye=(0,h._)(Oe,[x.OV.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,x.OV.S3_GET_ACTIONS]),Ie=(0,h._)(Oe,[x.OV.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,x.OV.S3_GET_ACTIONS]),Ne=(0,h._)(Oe,[x.OV.ADMIN_GET_BUCKET_QUOTA]);(0,i.useEffect)((()=>{W(!!n)}),[n,W]),(0,i.useEffect)((()=>{q&&(Ie?c.F.buckets.getBucketEncryptionInfo(Oe).then((e=>{e.data.algorithm&&(de(!0),E(e.data)),Y(!1)})).catch((e=>{"The server side encryption configuration was not found"===(e=(0,o.S)(e.error)).errorMessage&&(de(!1),E(null)),Y(!1)})):(de(!1),E(null),Y(!1)))}),[q,Oe,Ie]),(0,i.useEffect)((()=>{Z&&T&&c.F.buckets.getBucketVersioning(Oe).then((e=>{ne(e.data),Q(!1)})).catch((e=>{s((0,m.C9)((0,o.S)(e.error))),Q(!1)}))}),[Z,s,Oe,T]),(0,i.useEffect)((()=>{$&&T&&(Ne?c.F.buckets.getBucketQuota(Oe).then((e=>{ce(e.data),e.data.quota?ae(!0):ae(!1),H(!1)})).catch((e=>{s((0,m.C9)((0,o.S)(e.error))),ae(!1),H(!1)})):(ae(!1),H(!1)))}),[$,Q,s,Oe,T,Ne]),(0,i.useEffect)((()=>{Z&&T&&(ye?c.F.buckets.getBucketObjectLockingStatus(Oe).then((e=>{U(e.data.object_locking_enabled),L(!1)})).catch((e=>{s((0,m.C9)((0,o.S)(e.error))),L(!1)})):L(!1))}),[F,s,Oe,Z,T,ye]),(0,i.useEffect)((()=>{K&&c.F.buckets.listBuckets().then((e=>{const s=l()(e.data,"buckets",[]).find((e=>e.name===Oe)),t=l()(s,"size","0");M(!1),V(t)})).catch((e=>{M(!1),s((0,m.C9)((0,o.S)(e.error)))}))}),[K,s,Oe]),(0,i.useEffect)((()=>{X&&T&&c.F.buckets.getBucketReplication(Oe).then((e=>{const s=e.data.rules?e.data.rules:[];J(s.length>0),ee(!1)})).catch((e=>{s((0,m.C9)((0,o.S)(e.error))),ee(!1)}))}),[X,s,Oe,T]),(0,i.useEffect)((()=>{se&&B&&c.F.buckets.getBucketRetentionConfig(Oe).then((e=>{te(!1),xe(!0),me(e.data)})).catch((e=>{xe(!1),te(!1),me(null)}))}),[se,B,Oe]);const ke=()=>{s((0,p.ZU)(!0)),W(!0),M(!0),Q(!0),Y(!0),te(!0)};let Ae=null===ie||void 0===ie?void 0:ie.status,ve="Unversioned (Default)";return"Enabled"===Ae?ve="Versioned":"Suspended"===Ae&&(ve="Suspended"),(0,b.jsxs)(i.Fragment,{children:[fe&&(0,b.jsx)(k,{open:fe,selectedBucket:Oe,encryptionEnabled:oe,encryptionCfg:_,closeModalAndRefresh:()=>{be(!1),Y(!0)}}),Se&&(0,b.jsx)(z,{open:Se,selectedBucket:Oe,enabled:le,cfg:re,closeModalAndRefresh:()=>{ge(!1),H(!0)}}),P&&(0,b.jsx)(I,{bucketName:Oe,open:P,actualPolicy:Ee,actualDefinition:Ce,closeModalAndRefresh:()=>{G(!1),ke()}}),pe&&(0,b.jsx)(N,{bucketName:Oe,open:pe,closeModalAndRefresh:()=>{je(!1),ke()}}),Te&&(0,b.jsx)(A,{closeVersioningModalAndRefresh:e=>{_e(!1),e&&ke()},modalOpen:Te,selectedBucket:Oe,versioningInfo:ie,objectLockingEnabled:!!B}),(0,b.jsx)(d._xt,{separator:!0,sx:{marginBottom:15},children:"Summary"}),(0,b.jsxs)(d.xA9,{container:!0,children:[(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_BUCKET_POLICY,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsx)(d.xA9,{item:!0,xs:12,children:(0,b.jsxs)(d.azJ,{sx:u.mA,children:[(0,b.jsxs)(d.azJ,{sx:u.mA,children:[(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_BUCKET_POLICY,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsx)(O,{iamScopes:[x.OV.S3_PUT_BUCKET_POLICY,x.OV.S3_PUT_ACTIONS],resourceName:Oe,property:"Access Policy:",value:Ee.toLowerCase(),onEdit:()=>{G(!0)},isLoading:D,helpTip:(0,b.jsxs)(i.Fragment,{children:[(0,b.jsx)("strong",{children:"Private"})," policy limits access to credentialled accounts with appropriate permissions",(0,b.jsx)("br",{}),(0,b.jsx)("strong",{children:"Public"})," policy anyone will be able to upload, download and delete files from this Bucket once logged in",(0,b.jsx)("br",{}),(0,b.jsx)("strong",{children:"Custom"})," policy can be written to define which accounts are authorized to access this Bucket",(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),"To allow Bucket access without credentials, use the"," ",(0,b.jsx)("a",{href:`/buckets/${Oe}/admin/prefix`,children:"Anonymous"})," ","setting"]})})}),(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsx)(O,{iamScopes:[x.OV.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,x.OV.S3_PUT_ACTIONS],resourceName:Oe,property:"Encryption:",value:oe?"Enabled":"Disabled",onEdit:()=>{be(!0)},isLoading:q,helpTip:(0,b.jsxs)(i.Fragment,{children:["MinIO supports enabling automatic"," ",(0,b.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/server-side-encryption/server-side-encryption-sse-kms.html",target:"blank",children:"SSE-KMS"})," ","and"," ",(0,b.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/server-side-encryption/server-side-encryption-sse-s3.html",target:"blank",children:"SSE-S3"})," ","encryption of all objects written to a bucket using a specific External Key (EK) stored on the external KMS."]})})}),(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_REPLICATION_CONFIGURATION,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsx)(d.mZW,{label:"Replication:",value:(0,b.jsx)(f.A,{icon:w?(0,b.jsx)(d.xhy,{}):(0,b.jsx)(d.aaC,{}),label:(0,b.jsx)("label",{className:"muted",children:w?"Enabled":"Disabled"})})})}),(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsx)(d.mZW,{label:"Object Locking:",value:(0,b.jsx)(f.A,{icon:B?(0,b.jsx)(d.xhy,{}):(0,b.jsx)(d.aaC,{}),label:(0,b.jsx)("label",{className:"muted",children:B?"Enabled":"Disabled"})})})}),(0,b.jsx)(d.azJ,{children:(0,b.jsx)(d.mZW,{label:"Tags:",value:(0,b.jsx)(v,{bucketName:Oe})})}),(0,b.jsx)(O,{iamScopes:[x.OV.ADMIN_SET_BUCKET_QUOTA],resourceName:Oe,property:"Quota:",value:le?"Enabled":"Disabled",onEdit:()=>{ge(!0)},isLoading:$,helpTip:(0,b.jsxs)(i.Fragment,{children:["Setting a"," ",(0,b.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc/mc-quota-set.html",target:"blank",children:"quota"})," ","assigns a hard limit to a bucket beyond which MinIO does not allow writes."]})})]}),(0,b.jsxs)(d.azJ,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:[(0,b.jsx)(C,{bucketSize:`${R}`}),le&&re?(0,b.jsx)(y,{quota:re}):null]})]})})}),T&&(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_BUCKET_VERSIONING,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsxs)(d.xA9,{item:!0,xs:12,sx:{marginTop:5},children:[(0,b.jsx)(d._xt,{separator:!0,sx:{marginBottom:15},children:"Versioning"}),(0,b.jsx)(d.azJ,{sx:u.mA,children:(0,b.jsxs)(d.azJ,{sx:u.mA,children:[(0,b.jsx)(O,{iamScopes:[x.OV.S3_PUT_BUCKET_VERSIONING,x.OV.S3_PUT_ACTIONS],resourceName:Oe,property:"Current Status:",value:(0,b.jsx)(d.azJ,{sx:{display:"flex",flexDirection:"column",textDecorationStyle:"initial",placeItems:"flex-start",justifyItems:"flex-start",gap:3},children:(0,b.jsxs)("div",{children:[" ",ve]})}),onEdit:()=>{_e(!0)},isLoading:Z,disabled:B}),"Enabled"===(null===ie||void 0===ie?void 0:ie.status)?(0,b.jsx)(S,{versioningState:ie}):null]})})]})}),B&&(0,b.jsx)(h.R,{scopes:[x.OV.S3_GET_OBJECT_RETENTION,x.OV.S3_GET_ACTIONS],resource:Oe,children:(0,b.jsxs)(d.xA9,{item:!0,xs:12,sx:{marginTop:5},children:[(0,b.jsx)(d._xt,{separator:!0,sx:{marginBottom:15},children:"Retention"}),(0,b.jsx)(d.azJ,{sx:u.mA,children:(0,b.jsxs)(d.azJ,{sx:u.mA,children:[(0,b.jsx)(O,{iamScopes:[x.OV.ADMIN_SET_BUCKET_QUOTA],resourceName:Oe,property:"Retention:",value:ue?"Enabled":"Disabled",onEdit:()=>{je(!0)},isLoading:se,helpTip:(0,b.jsxs)(i.Fragment,{children:["MinIO"," ",(0,b.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/macos/administration/object-management.html#object-retention",children:"Object Locking"})," ","enforces Write-Once Read-Many (WORM) immutability to protect versioned objects from deletion."]})}),(0,b.jsx)(d.mZW,{label:"Mode:",value:(0,b.jsx)("label",{className:"muted",style:{textTransform:"capitalize"},children:he&&he.mode?he.mode:"-"})}),(0,b.jsx)(d.mZW,{label:"Validity:",value:(0,b.jsxs)("label",{className:"muted",style:{textTransform:"capitalize"},children:[he&&he.validity," ",he&&(1===he.validity?null===(e=he.unit)||void 0===e?void 0:e.slice(0,-1):he.unit)]})})]})})]})})]})]})}},25903:(e,s,t)=>{t.d(s,{A:()=>l});t(65043);var i=t(89923),n=t(70579);const l=e=>{let{icon:s=null,label:t=null}=e;return(0,n.jsxs)(i.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,n.jsx)(i.azJ,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:s}),(0,n.jsx)(i.azJ,{children:t})]})}}}]);
-//# sourceMappingURL=12.fcd89e94.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/12.fcd89e94.chunk.js.map b/web-app/build/static/js/12.fcd89e94.chunk.js.map
deleted file mode 100644
index adbccd059..000000000
--- a/web-app/build/static/js/12.fcd89e94.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/12.fcd89e94.chunk.js","mappings":"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","sources":["screens/Console/Buckets/VersioningInfo.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditActionButton.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditablePropertyItem.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/ReportedUsage.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/BucketQuotaSize.tsx","screens/Console/Buckets/BucketDetails/BucketSummaryPanel.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DisabledIcon, EnabledIcon, Box } from \"mds\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport LabelWithIcon from \"./BucketDetails/SummaryItems/LabelWithIcon\";\n\nconst VersioningInfo = ({\n versioningState = {},\n}: {\n versioningState?: BucketVersioningResponse;\n}) => {\n return (\n \n \n {versioningState.excludeFolders ? (\n \n ) : (\n \n )\n }\n label={\n \n }\n />\n ) : null}\n \n {versioningState.excludedPrefixes?.length ? (\n \n Excluded Prefixes :\n
\n \n ) : null}\n \n );\n};\n\nexport default VersioningInfo;\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 { EditIcon, IconButton } from \"mds\";\n\ntype EditActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n [x: string]: any;\n};\n\nconst EditActionButton = ({\n disabled,\n onClick,\n ...restProps\n}: EditActionButtonProps) => {\n return (\n \n \n \n );\n};\n\nexport default EditActionButton;\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 { ActionLink, Box, HelpTip, ValuePair } from \"mds\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\n\nimport EditActionButton from \"./EditActionButton\";\n\ntype EditablePropertyItemProps = {\n isLoading: boolean;\n resourceName: string;\n iamScopes: string[];\n property: any;\n value: any;\n onEdit: () => void;\n secureCmpProps?: Record;\n disabled?: boolean;\n helpTip?: any;\n};\n\nconst SecureAction = ({\n resourceName,\n iamScopes,\n secureCmpProps = {},\n children,\n}: {\n resourceName: string;\n iamScopes: string[];\n children: any;\n secureCmpProps?: Record;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst EditablePropertyItem = ({\n isLoading = true,\n resourceName = \"\",\n iamScopes,\n secureCmpProps = {},\n property = null,\n value = null,\n onEdit,\n disabled = false,\n helpTip,\n}: EditablePropertyItemProps) => {\n return (\n \n \n \n \n \n \n ) : (\n \n \n \n )\n }\n />\n \n \n \n \n );\n};\n\nexport default EditablePropertyItem;\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 { ReportedUsageFullIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst ReportedUsage = ({ bucketSize }: { bucketSize: string }) => {\n return (\n \n \n\n \n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HardBucketQuotaIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst BucketQuotaSize = ({ quota }: { quota: any }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default BucketQuotaSize;\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\";\n\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport {\n BucketEncryptionInfo,\n BucketQuota,\n BucketVersioningResponse,\n GetBucketRetentionConfig,\n} from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Box,\n DisabledIcon,\n EnabledIcon,\n Grid,\n SectionTitle,\n ValuePair,\n} from \"mds\";\nimport { twoColCssGridLayoutConfig } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n} from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport VersioningInfo from \"../VersioningInfo\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport LabelWithIcon from \"./SummaryItems/LabelWithIcon\";\nimport EditablePropertyItem from \"./SummaryItems/EditablePropertyItem\";\nimport ReportedUsage from \"./SummaryItems/ReportedUsage\";\nimport BucketQuotaSize from \"./SummaryItems/BucketQuotaSize\";\n\nconst SetAccessPolicy = withSuspense(\n React.lazy(() => import(\"./SetAccessPolicy\")),\n);\nconst SetRetentionConfig = withSuspense(\n React.lazy(() => import(\"./SetRetentionConfig\")),\n);\nconst EnableBucketEncryption = withSuspense(\n React.lazy(() => import(\"./EnableBucketEncryption\")),\n);\nconst EnableVersioningModal = withSuspense(\n React.lazy(() => import(\"./EnableVersioningModal\")),\n);\nconst BucketTags = withSuspense(\n React.lazy(() => import(\"./SummaryItems/BucketTags\")),\n);\nconst EnableQuota = withSuspense(React.lazy(() => import(\"./EnableQuota\")));\n\nconst BucketSummary = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const distributedSetup = useSelector(selDistSet);\n\n const [encryptionCfg, setEncryptionCfg] =\n useState(null);\n const [bucketSize, setBucketSize] = useState(\"0\");\n const [hasObjectLocking, setHasObjectLocking] = useState(\n false,\n );\n const [accessPolicyScreenOpen, setAccessPolicyScreenOpen] =\n useState(false);\n const [replicationRules, setReplicationRules] = useState(false);\n const [loadingObjectLocking, setLoadingLocking] = useState(true);\n const [loadingSize, setLoadingSize] = useState(true);\n const [bucketLoading, setBucketLoading] = useState(true);\n const [loadingEncryption, setLoadingEncryption] = useState(true);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [loadingQuota, setLoadingQuota] = useState(true);\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [loadingRetention, setLoadingRetention] = useState(true);\n const [versioningInfo, setVersioningInfo] =\n useState();\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quota, setQuota] = useState(null);\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [retentionEnabled, setRetentionEnabled] = useState(false);\n const [retentionConfig, setRetentionConfig] =\n useState(null);\n const [retentionConfigOpen, setRetentionConfigOpen] =\n useState(false);\n const [enableEncryptionScreenOpen, setEnableEncryptionScreenOpen] =\n useState(false);\n const [enableQuotaScreenOpen, setEnableQuotaScreenOpen] =\n useState(false);\n const [enableVersioningOpen, setEnableVersioningOpen] =\n useState(false);\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_summary\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const bucketName = params.bucketName || \"\";\n\n let accessPolicy = \"PRIVATE\";\n let policyDefinition = \"\";\n\n if (bucketInfo !== null && bucketInfo.access && bucketInfo.definition) {\n accessPolicy = bucketInfo.access;\n policyDefinition = bucketInfo.definition;\n }\n\n const displayGetBucketObjectLockConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketEncryptionConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketQuota = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setBucketLoading(true);\n } else {\n setBucketLoading(false);\n }\n }, [loadingBucket, setBucketLoading]);\n\n useEffect(() => {\n if (loadingEncryption) {\n if (displayGetBucketEncryptionConfiguration) {\n api.buckets\n .getBucketEncryptionInfo(bucketName)\n .then((res) => {\n if (res.data.algorithm) {\n setEncryptionEnabled(true);\n setEncryptionCfg(res.data);\n }\n setLoadingEncryption(false);\n })\n .catch((err) => {\n err = errorToHandler(err.error);\n if (\n err.errorMessage ===\n \"The server side encryption configuration was not found\"\n ) {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n }\n setLoadingEncryption(false);\n });\n } else {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n setLoadingEncryption(false);\n }\n }\n }, [loadingEncryption, bucketName, displayGetBucketEncryptionConfiguration]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n setVersioningInfo(res.data);\n setLoadingVersioning(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingQuota && distributedSetup) {\n if (displayGetBucketQuota) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n setQuota(res.data);\n if (res.data.quota) {\n setQuotaEnabled(true);\n } else {\n setQuotaEnabled(false);\n }\n setLoadingQuota(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setQuotaEnabled(false);\n setLoadingQuota(false);\n });\n } else {\n setQuotaEnabled(false);\n setLoadingQuota(false);\n }\n }\n }, [\n loadingQuota,\n setLoadingVersioning,\n dispatch,\n bucketName,\n distributedSetup,\n displayGetBucketQuota,\n ]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n if (displayGetBucketObjectLockConfiguration) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n setHasObjectLocking(res.data.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingLocking(false);\n });\n } else {\n setLoadingLocking(false);\n }\n }\n }, [\n loadingObjectLocking,\n dispatch,\n bucketName,\n loadingVersioning,\n distributedSetup,\n displayGetBucketObjectLockConfiguration,\n ]);\n\n useEffect(() => {\n if (loadingSize) {\n api.buckets\n .listBuckets()\n .then((res) => {\n const resBuckets = get(res.data, \"buckets\", []);\n\n const bucketInfo = resBuckets.find(\n (bucket) => bucket.name === bucketName,\n );\n\n const size = get(bucketInfo, \"size\", \"0\");\n\n setLoadingSize(false);\n setBucketSize(size);\n })\n .catch((err) => {\n setLoadingSize(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [loadingSize, dispatch, bucketName]);\n\n useEffect(() => {\n if (loadingReplication && distributedSetup) {\n api.buckets\n .getBucketReplication(bucketName)\n .then((res) => {\n const r = res.data.rules ? res.data.rules : [];\n setReplicationRules(r.length > 0);\n setLoadingReplication(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingReplication(false);\n });\n }\n }, [loadingReplication, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingRetention && hasObjectLocking) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingRetention(false);\n setRetentionEnabled(true);\n setRetentionConfig(res.data);\n })\n .catch((err) => {\n setRetentionEnabled(false);\n setLoadingRetention(false);\n setRetentionConfig(null);\n });\n }\n }, [loadingRetention, hasObjectLocking, bucketName]);\n\n const loadAllBucketData = () => {\n dispatch(setBucketDetailsLoad(true));\n setBucketLoading(true);\n setLoadingSize(true);\n setLoadingVersioning(true);\n setLoadingEncryption(true);\n setLoadingRetention(true);\n };\n\n const setBucketVersioning = () => {\n setEnableVersioningOpen(true);\n };\n const setBucketQuota = () => {\n setEnableQuotaScreenOpen(true);\n };\n\n const closeEnableBucketEncryption = () => {\n setEnableEncryptionScreenOpen(false);\n setLoadingEncryption(true);\n };\n const closeEnableBucketQuota = () => {\n setEnableQuotaScreenOpen(false);\n setLoadingQuota(true);\n };\n\n const closeSetAccessPolicy = () => {\n setAccessPolicyScreenOpen(false);\n loadAllBucketData();\n };\n\n const closeRetentionConfig = () => {\n setRetentionConfigOpen(false);\n loadAllBucketData();\n };\n\n const closeEnableVersioning = (refresh: boolean) => {\n setEnableVersioningOpen(false);\n if (refresh) {\n loadAllBucketData();\n }\n };\n\n let versioningStatus = versioningInfo?.status;\n let versioningText = \"Unversioned (Default)\";\n if (versioningStatus === \"Enabled\") {\n versioningText = \"Versioned\";\n } else if (versioningStatus === \"Suspended\") {\n versioningText = \"Suspended\";\n }\n\n return (\n \n {enableEncryptionScreenOpen && (\n \n )}\n {enableQuotaScreenOpen && (\n \n )}\n {accessPolicyScreenOpen && (\n \n )}\n {retentionConfigOpen && (\n \n )}\n {enableVersioningOpen && (\n \n )}\n\n \n Summary\n \n \n \n \n \n \n \n {\n setAccessPolicyScreenOpen(true);\n }}\n isLoading={bucketLoading}\n helpTip={\n \n Private policy limits access to\n credentialled accounts with appropriate permissions\n \n Public policy anyone will be able to\n upload, download and delete files from this Bucket once\n logged in\n \n Custom policy can be written to define\n which accounts are authorized to access this Bucket\n \n \n To allow Bucket access without credentials, use the{\" \"}\n \n Anonymous\n {\" \"}\n setting\n \n }\n />\n \n\n \n {\n setEnableEncryptionScreenOpen(true);\n }}\n isLoading={loadingEncryption}\n helpTip={\n \n MinIO supports enabling automatic{\" \"}\n \n SSE-KMS\n {\" \"}\n and{\" \"}\n \n SSE-S3\n {\" \"}\n encryption of all objects written to a bucket using a\n specific External Key (EK) stored on the external KMS.\n \n }\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n \n }\n />\n \n \n Setting a{\" \"}\n \n quota\n {\" \"}\n assigns a hard limit to a bucket beyond which MinIO does\n not allow writes.\n \n }\n />\n \n \n \n {quotaEnabled && quota ? (\n \n ) : null}\n \n \n \n \n\n {distributedSetup && (\n \n \n \n Versioning\n \n\n \n \n \n
{versioningText}
\n \n }\n onEdit={setBucketVersioning}\n isLoading={loadingVersioning}\n disabled={hasObjectLocking}\n />\n\n {versioningInfo?.status === \"Enabled\" ? (\n \n ) : null}\n \n \n \n \n )}\n\n {hasObjectLocking && (\n \n \n \n Retention\n \n\n \n \n {\n setRetentionConfigOpen(true);\n }}\n isLoading={loadingRetention}\n helpTip={\n \n MinIO{\" \"}\n \n Object Locking\n {\" \"}\n enforces Write-Once Read-Many (WORM) immutability to\n protect versioned objects from deletion.\n \n }\n />\n\n \n {retentionConfig && retentionConfig.mode\n ? retentionConfig.mode\n : \"-\"}\n \n }\n />\n \n {retentionConfig && retentionConfig.validity}{\" \"}\n {retentionConfig &&\n (retentionConfig.validity === 1\n ? retentionConfig.unit?.slice(0, -1)\n : retentionConfig.unit)}\n \n }\n />\n \n \n \n \n )}\n \n \n );\n};\n\nexport default BucketSummary;\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 \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n"],"names":["_ref","_versioningState$excl","_versioningState$excl2","versioningState","_jsxs","Box","sx","display","flexDirection","gap","children","_jsx","fontWeight","excludeFolders","LabelWithIcon","icon","EnabledIcon","style","color","DisabledIcon","label","textDecoration","excludedPrefixes","length","justifyItems","placeItems","maxHeight","overflowY","map","it","prefix","disabled","onClick","restProps","IconButton","size","EditIcon","SecureAction","resourceName","iamScopes","secureCmpProps","SecureComponent","scopes","resource","errorProps","_ref2","isLoading","property","value","onEdit","helpTip","alignItems","justifyContent","ValuePair","HelpTip","placement","content","ActionLink","textTransform","EditActionButton","background","marginLeft","top","width","height","bucketSize","ReportedUsageFullIcon","flexFlow","fontSize","niceBytes","quota","HardBucketQuotaIcon","type","SetAccessPolicy","withSuspense","React","SetRetentionConfig","EnableBucketEncryption","EnableVersioningModal","BucketTags","EnableQuota","BucketSummary","_retentionConfig$unit","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","distributedSetup","selDistSet","encryptionCfg","setEncryptionCfg","useState","setBucketSize","hasObjectLocking","setHasObjectLocking","accessPolicyScreenOpen","setAccessPolicyScreenOpen","replicationRules","setReplicationRules","loadingObjectLocking","setLoadingLocking","loadingSize","setLoadingSize","bucketLoading","setBucketLoading","loadingEncryption","setLoadingEncryption","loadingVersioning","setLoadingVersioning","loadingQuota","setLoadingQuota","loadingReplication","setLoadingReplication","loadingRetention","setLoadingRetention","versioningInfo","setVersioningInfo","quotaEnabled","setQuotaEnabled","setQuota","encryptionEnabled","setEncryptionEnabled","retentionEnabled","setRetentionEnabled","retentionConfig","setRetentionConfig","retentionConfigOpen","setRetentionConfigOpen","enableEncryptionScreenOpen","setEnableEncryptionScreenOpen","enableQuotaScreenOpen","setEnableQuotaScreenOpen","enableVersioningOpen","setEnableVersioningOpen","useEffect","setHelpName","bucketName","accessPolicy","policyDefinition","access","definition","displayGetBucketObjectLockConfiguration","hasPermission","IAM_SCOPES","S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION","S3_GET_ACTIONS","displayGetBucketEncryptionConfiguration","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","displayGetBucketQuota","ADMIN_GET_BUCKET_QUOTA","api","buckets","getBucketEncryptionInfo","then","res","data","algorithm","catch","err","errorToHandler","error","errorMessage","getBucketVersioning","setErrorSnackMessage","getBucketQuota","getBucketObjectLockingStatus","object_locking_enabled","listBuckets","get","find","bucket","name","getBucketReplication","r","rules","getBucketRetentionConfig","loadAllBucketData","setBucketDetailsLoad","versioningStatus","status","versioningText","Fragment","open","selectedBucket","closeModalAndRefresh","closeEnableBucketEncryption","enabled","cfg","closeEnableBucketQuota","actualPolicy","actualDefinition","closeSetAccessPolicy","closeRetentionConfig","closeVersioningModalAndRefresh","refresh","modalOpen","objectLockingEnabled","SectionTitle","separator","marginBottom","Grid","container","S3_GET_BUCKET_POLICY","item","xs","twoColCssGridLayoutConfig","EditablePropertyItem","S3_PUT_BUCKET_POLICY","S3_PUT_ACTIONS","toLowerCase","href","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","target","S3_GET_REPLICATION_CONFIGURATION","className","ADMIN_SET_BUCKET_QUOTA","setBucketQuota","gridTemplateColumns","ReportedUsage","BucketQuotaSize","S3_GET_BUCKET_VERSIONING","marginTop","S3_PUT_BUCKET_VERSIONING","textDecorationStyle","setBucketVersioning","VersioningInfo","S3_GET_OBJECT_RETENTION","mode","validity","unit","slice"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/1303.6fa13ab4.chunk.js b/web-app/build/static/js/1303.6fa13ab4.chunk.js
deleted file mode 100644
index 512e717bf..000000000
--- a/web-app/build/static/js/1303.6fa13ab4.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1303],{1303:(e,t,a)=>{a.r(t),a.d(t,{default:()=>g});var n=a(65043),l=a(89923),r=a(77403),s=a(94141),o=a(64159),i=a(21383),d=a(56629),c=a(53518),u=a(70579);const g=e=>{let{modalOpen:t,currentTags:a,onCloseAndUpdate:g,bucketName:m}=e;const p=(0,i.jL)(),[b,h]=(0,n.useState)(""),[x,w]=(0,n.useState)(""),[j,C]=(0,n.useState)(!1);return(0,u.jsx)(s.A,{modalOpen:t,title:"Add New Tag ",onClose:()=>{g(!1)},titleIcon:(0,u.jsx)(l.b_$,{}),children:(0,u.jsxs)(l.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,u.jsxs)(l.azJ,{sx:{marginBottom:15},children:[(0,u.jsx)("strong",{children:"Bucket"}),": ",m]}),(0,u.jsx)(l.cl_,{value:b,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:e=>{h(e.target.value)}}),(0,u.jsx)(l.cl_,{value:x,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:e=>{w(e.target.value)}}),(0,u.jsxs)(l.xA9,{item:!0,xs:12,sx:r.Uz.modalButtonBar,children:[(0,u.jsx)(l.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{w(""),h("")},label:"Clear"}),(0,u.jsx)(l.$nd,{id:"save-add-bucket-tag",type:"submit",variant:"callAction",color:"primary",disabled:""===x.trim()||""===b.trim()||j,onClick:()=>{C(!0);const e={};e[b]=x;const t={...a,...e};d.F.buckets.putBucketTags(m,{tags:t}).then((()=>{C(!1),g(!0)})).catch((e=>{p((0,o.Dy)((0,c.S)(e.error))),C(!1)}))},label:"Save"})]})]})})}},94141:(e,t,a)=>{a.d(t,{A:()=>c});var n=a(65043),l=a(22166),r=a(89923),s=a(21383),o=a(64159),i=a(49555),d=a(70579);const c=e=>{let{onClose:t,modalOpen:a,title:c,children:u,wideLimit:g=!0,titleIcon:m=null,iconColor:p="default",sx:b}=e;const h=(0,s.jL)(),[x,w]=(0,n.useState)(!1),j=(0,l.d4)((e=>e.system.modalSnackBar));(0,n.useEffect)((()=>{h((0,o.h0)(""))}),[h]),(0,n.useEffect)((()=>{if(j){if(""===j.message)return void w(!1);"error"!==j.type&&w(!0)}}),[j]);let C="";return j&&(C=j.detailedErrorMsg,(""===C||C&&C.length<5)&&(C=j.message)),(0,d.jsxs)(r.ngX,{onClose:t,open:a,title:c,titleIcon:m,widthLimit:g,sx:b,iconColor:p,children:[(0,d.jsx)(i.A,{isModal:!0}),(0,d.jsx)(r.qb_,{onClose:()=>{w(!1),h((0,o.h0)(""))},open:x,message:C,mode:"inline",variant:"error"===j.type?"error":"default",autoHideDuration:"error"===j.type?10:5,condensed:!0}),u]})}}}]);
-//# sourceMappingURL=1303.6fa13ab4.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/1303.6fa13ab4.chunk.js.map b/web-app/build/static/js/1303.6fa13ab4.chunk.js.map
deleted file mode 100644
index f1fa175a5..000000000
--- a/web-app/build/static/js/1303.6fa13ab4.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1303.6fa13ab4.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddNewTagIcon, Box, Button, FormLayout, Grid, InputBox } from \"mds\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n}: IBucketTagModal) => {\n const dispatch = useAppDispatch();\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api.buckets\n .putBucketTags(bucketName, {\n tags: newTagList,\n })\n .then(() => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(error.error)));\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n \n Bucket: {bucketName}\n \n {\n setNewKey(e.target.value);\n }}\n />\n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n );\n};\n\nexport default AddBucketTagModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { ModalBox, Snackbar } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport MainError from \"../MainError/MainError\";\n\ninterface IModalProps {\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n titleIcon?: React.ReactNode;\n iconColor?: \"default\" | \"delete\" | \"accept\";\n sx?: CSSObject;\n}\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n wideLimit = true,\n titleIcon = null,\n iconColor = \"default\",\n sx,\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 let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (message === \"\" || (message && message.length < 5)) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default ModalWrapper;\n"],"names":["_ref","modalOpen","currentTags","onCloseAndUpdate","bucketName","dispatch","useAppDispatch","newKey","setNewKey","useState","newLabel","setNewLabel","isSending","setIsSending","_jsx","ModalWrapper","title","onClose","titleIcon","AddNewTagIcon","children","_jsxs","FormLayout","withBorders","containerPadding","Box","sx","marginBottom","InputBox","value","label","id","name","placeholder","onChange","e","target","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","resetForm","color","disabled","trim","addTagProcess","newTag","newTagList","api","buckets","putBucketTags","tags","then","catch","error","setModalErrorSnackMessage","errorToHandler","wideLimit","iconColor","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","detailedErrorMsg","length","ModalBox","open","widthLimit","MainError","isModal","Snackbar","closeSnackBar","mode","autoHideDuration","condensed"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/1324.b4c459ae.chunk.js b/web-app/build/static/js/1324.b4c459ae.chunk.js
deleted file mode 100644
index 6c22d76a7..000000000
--- a/web-app/build/static/js/1324.b4c459ae.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1324,4705,5851],{94141:(e,s,t)=>{t.d(s,{A:()=>d});var l=t(65043),n=t(22166),i=t(89923),o=t(21383),r=t(64159),c=t(49555),a=t(70579);const d=e=>{let{onClose:s,modalOpen:t,title:d,children:u,wideLimit:p=!0,titleIcon:x=null,iconColor:h="default",sx:m}=e;const j=(0,o.jL)(),[g,b]=(0,l.useState)(!1),y=(0,n.d4)((e=>e.system.modalSnackBar));(0,l.useEffect)((()=>{j((0,r.h0)(""))}),[j]),(0,l.useEffect)((()=>{if(y){if(""===y.message)return void b(!1);"error"!==y.type&&b(!0)}}),[y]);let f="";return y&&(f=y.detailedErrorMsg,(""===f||f&&f.length<5)&&(f=y.message)),(0,a.jsxs)(i.ngX,{onClose:s,open:t,title:d,titleIcon:x,widthLimit:p,sx:m,iconColor:h,children:[(0,a.jsx)(c.A,{isModal:!0}),(0,a.jsx)(i.qb_,{onClose:()=>{b(!1),j((0,r.h0)(""))},open:g,message:f,mode:"inline",variant:"error"===y.type?"error":"default",autoHideDuration:"error"===y.type?10:5,condensed:!0}),u]})}},85851:(e,s,t)=>{t.r(s),t.d(s,{default:()=>u});var l=t(65043),n=t(89923),i=t(64159),o=t(21383),r=t(58661),c=t(56629),a=t(53518),d=t(70579);const u=e=>{let{selectedGroups:s,deleteOpen:t,closeDeleteModalAndRefresh:u}=e;const p=(0,o.jL)(),[x,h]=(0,l.useState)(!1);if(!s)return null;const m=s.map((e=>(0,d.jsx)("div",{children:(0,d.jsx)("b",{children:e})},e)));return(0,d.jsx)(r.A,{title:"Delete Group"+(s.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(n.xWY,{}),isLoading:x,onConfirm:()=>{for(let e of s)h(!0),c.F.group.removeGroup(e).then((e=>{u(!0)})).catch((async e=>{const s=await e.json();p((0,i.C9)((0,a.S)(s))),u(!1)})).finally((()=>h(!1)))},onClose:()=>u(!1),confirmationContent:(0,d.jsxs)(l.Fragment,{children:["Are you sure you want to delete the following"," ",1===s.length?"":s.length," group",s.length>1?"s?":"?",m]})})}},91324:(e,s,t)=>{t.r(s),t.d(s,{default:()=>C});var l=t(65043),n=t(73216),i=t(89923),o=t(56629),r=t(53518),c=t(99161),a=t(77938),d=t(64159),u=t(21383),p=t(62560),x=t(74705),h=t(77403),m=t(22923),j=t(94141),g=t(70579);const b=e=>{let{title:s="",groupStatus:t="enabled",preSelectedUsers:n=[],selectedGroup:c="",open:a,onClose:p}=e;const x=(0,u.jL)(),[b,y]=(0,l.useState)(n);return(0,g.jsxs)(j.A,{modalOpen:a,onClose:p,title:s,titleIcon:(0,g.jsx)(i.WC,{}),children:[(0,g.jsxs)(i.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(i.EmB,{label:"Selected Group",sx:{width:"100%"},children:c}),(0,g.jsx)(m.A,{selectedUsers:b,setSelectedUsers:y,editMode:!c})]}),(0,g.jsxs)(i.xA9,{item:!0,xs:12,sx:h.Uz.modalButtonBar,children:[(0,g.jsx)(i.$nd,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:()=>{y(n)},label:"Reset"}),(0,g.jsx)(i.$nd,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:()=>{o.F.group.updateGroup(c,{members:b,status:t}).then((()=>{p()})).catch((e=>{p(),x((0,d.Dy)((0,r.S)(e.error)))}))},label:"Save"})]})]})};var y=t(85851),f=t(64681),v=t(6681),A=t(88617),S=t(48793);const C=()=>{const e=(0,u.jL)(),s=(0,n.Zp)(),t=(0,n.g)(),[h,m]=(0,l.useState)({}),[j,C]=(0,l.useState)(!1),[P,G]=(0,l.useState)(!1),[M,U]=(0,l.useState)(!1),[k,w]=(0,l.useState)(""),[E,L]=(0,l.useState)("members"),{members:z=[],policy:D="",status:I}=h,N=z.filter((e=>e.includes(k))),R=(0,a._)(c.Ms,c.Ld,!0);(0,l.useEffect)((()=>{e((0,d.ph)("group_details"))}),[]),(0,l.useEffect)((()=>{t.groupName&&J()}),[t.groupName]);const F=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")}(D),B="enabled"===I,K=z.length>0?"Edit Members":"Add Members",_=(0,a._)(c.Ms,c.Oh),O=(0,a._)(c.Ms,c.Hr,!0),$=(0,a._)(c.Ms,c.QR,!0),H=(0,a._)(c.Ms,c.yv,!0);function J(){_&&o.F.group.groupInfo(t.groupName||"").then((e=>{m(e.data)})).catch((s=>{e((0,d.Dy)((0,r.S)(s.error))),m({})}))}const T=(0,g.jsxs)(i.azJ,{onMouseMove:()=>{e((0,d.ph)("groups_members"))},children:[(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(f.A,{placeholder:"Search members",onChange:e=>{w(e)},value:k,sx:{maxWidth:280}}),(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.BD,errorProps:{disabled:!0},children:(0,g.jsx)(v.A,{tooltip:O?K:(0,c.vj)(c.k1,"edit Group membership"),children:(0,g.jsx)(i.$nd,{id:"add-user-group",label:K,variant:"callAction",icon:(0,g.jsx)(i.REV,{}),onClick:()=>{G(!0)},disabled:!O})})})]}),children:"Members"}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.x6,errorProps:{disabled:!0},children:(0,g.jsx)(v.A,{tooltip:R?"":(0,c.vj)(c.Ld,"view User details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s(`${c.zZ.USERS}/${encodeURIComponent(e)}`)},isDisabled:!R}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:N,entityName:"Users"})})})})]}),Q=(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(i.azJ,{onMouseMove:()=>{e((0,d.ph)("groups_policies"))},children:(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(v.A,{tooltip:$?"Set Policies":(0,c.vj)(c.QR,"assign Policies"),children:(0,g.jsx)(i.$nd,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(i.n$X,{}),onClick:()=>{C(!0)},disabled:!$})}),children:"Policies"})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(v.A,{tooltip:H?"":(0,c.vj)(c.yv,"view Policy details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s(`${c.zZ.POLICIES}/${encodeURIComponent(e)}`)},isDisabled:!H}],columns:[{label:"Policy"}],isLoading:!1,records:F,entityName:"Policies"})})})]});return(0,g.jsxs)(l.Fragment,{children:[j?(0,g.jsx)(x.default,{open:j,selectedGroups:[t.groupName||""],selectedUser:null,closeModalAndRefresh:()=>{C(!1),J(),e((0,p.Gy)([]))}}):null,P?(0,g.jsx)(b,{selectedGroup:t.groupName,onSaveClick:()=>{},title:K,groupStatus:I,preSelectedUsers:z,open:P,onClose:()=>{G(!1),J()}}):null,M&&(0,g.jsx)(y.default,{deleteOpen:M,selectedGroups:[t.groupName||""],closeDeleteModalAndRefresh:e=>{U(!1),e&&s(c.zZ.GROUPS)}}),(0,g.jsx)(S.A,{label:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.EGL,{label:"Groups",onClick:()=>s(c.zZ.GROUPS)})}),actions:(0,g.jsx)(A.A,{})}),(0,g.jsxs)(i.Mxu,{children:[(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.lcx,{icon:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.YXz,{width:40})}),title:t.groupName||"",subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",fontSize:14,alignItems:"center",gap:15},children:[(0,g.jsx)("span",{children:"Group Status:"}),(0,g.jsx)("span",{id:"group-status-label",style:{fontWeight:"bold"},children:B?"Enabled":"Disabled"}),(0,g.jsx)(v.A,{tooltip:(0,a._)(c.Ms,c.pf,!0)?"":(0,c.vj)(c.pf,"enable or disable Groups"),children:(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.pf,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(i.dOG,{indicatorLabels:["Enabled","Disabled"],checked:B,value:"group_enabled",id:"group-status",name:"group-status",onChange:()=>{var s;s=!B,o.F.group.updateGroup(t.groupName||"",{members:z,status:s?"enabled":"disabled"}).then((()=>{J()})).catch((s=>{e((0,d.Dy)((0,r.S)(s.error)))}))},switchOnly:!0})})}),(0,g.jsx)(v.A,{tooltip:"Delete Group",children:(0,g.jsx)(i.$nd,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(i.ucK,{}),onClick:()=>{U(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.tUM,{options:[{tabConfig:{id:"members",label:"Members"},content:T},{tabConfig:{id:"policies",label:"Policies"},content:Q}],currentTabOrPath:E,onTabClick:L})})]})]})}},22923:(e,s,t)=>{t.d(s,{A:()=>h});var l=t(65043),n=t(33097),i=t.n(n),o=t(56629),r=t(53518),c=t(89923),a=t(8185),d=t(64159),u=t(21383),p=t(64681),x=t(70579);const h=e=>{let{selectedUsers:s,setSelectedUsers:t,editMode:n=!1}=e;const h=(0,u.jL)(),[m,j]=(0,l.useState)([]),[g,b]=(0,l.useState)(!1),[y,f]=(0,l.useState)(""),v=(0,l.useCallback)((()=>{o.F.users.listUsers().then((e=>{let s=i()(e.data,"users",[]);s||(s=[]),j(s.sort(a.LA)),b(!1)})).catch((e=>{h((0,d.Dy)((0,r.S)(e.error))),b(!1)}))}),[h]);(0,l.useEffect)((()=>{b(!0)}),[]),(0,l.useEffect)((()=>{g&&v()}),[g,v]);const A=s||[],S=m.filter((e=>e.accessKey.includes(y)));return(0,x.jsx)(c.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsxs)(c.azJ,{children:[g&&(0,x.jsx)(c.z21,{}),(null===m||void 0===m?void 0:m.length)>0?(0,x.jsxs)(l.Fragment,{children:[(0,x.jsx)(c.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(p.A,{label:n?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:f,value:y})}),(0,x.jsx)(c.bQt,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...A];return n?i.push(l):i=i.filter((e=>e!==l)),t(i),i},selectedItems:A,isLoading:g,records:S,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,x.jsx)(c.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},42967:(e,s,t)=>{t.d(s,{A:()=>x});var l=t(65043),n=t(89923),i=t(8185),o=t(64681),r=t(64159),c=t(21383),a=t(62560),d=t(22166),u=t(56629),p=t(70579);const x=e=>{let{noTitle:s=!1}=e;const t=(0,c.jL)(),[x,h]=(0,l.useState)([]),[m,j]=(0,l.useState)(!1),[g,b]=(0,l.useState)(""),y=(0,d.d4)((e=>e.createUser.selectedPolicies)),f=(0,l.useCallback)((()=>{j(!0),u.F.policies.listPolicies().then((e=>{var s;const t=null!==(s=e.data.policies)&&void 0!==s?s:[];j(!1),h(t.sort(i.Hw))})).catch((e=>{j(!1),t((0,r.Dy)(e))}))}),[t]);(0,l.useEffect)((()=>{j(!0)}),[]),(0,l.useEffect)((()=>{m&&f()}),[m,f]);const v=x.filter((e=>e.name.includes(g)));return(0,p.jsxs)(n.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,p.jsx)(n.z21,{}),x.length>0?(0,p.jsxs)(l.Fragment,{children:[(0,p.jsx)(n.xA9,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(o.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{b(e)},value:g,label:s?"":"Assign Policies"})}),(0,p.jsx)(n.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...y];n?i.push(l):i=i.filter((e=>e!==l)),i=i.filter((e=>""!==e)),t((0,a.Gy)(i))},selectedItems:y,isLoading:m,records:v,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(n.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},74705:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});var l=t(65043),n=t(33097),i=t.n(n),o=t(22166),r=t(89923),c=t(64159),a=t(21383),d=t(77403),u=t(62560),p=t(94141),x=t(42967),h=t(20649),m=t(70579);const j=e=>{let{closeModalAndRefresh:s,selectedUser:t,selectedGroups:n,open:j}=e;const g=(0,a.jL)(),[b,y]=(0,l.useState)(!1),[f,v]=(0,l.useState)([]),[A,S]=(0,l.useState)([]),C=(0,o.d4)((e=>e.createUser.selectedPolicies));(0,l.useEffect)((()=>{if(j){if(1===(null===n||void 0===n?void 0:n.length))return void(1===(null===n||void 0===n?void 0:n.length)&&h.A.invoke("GET",`/api/v1/group/${encodeURIComponent(n[0])}`).then((e=>{const s=i()(e,"policy","");v(s.split(",")),S(s.split(",")),g((0,u.Gy)(s.split(",")))})).catch((e=>{g((0,c.Dy)(e)),y(!1)})));const e=i()(t,"policy",[]);v(e),S(e),g((0,u.Gy)(e))}}),[j,null===n||void 0===n?void 0:n.length,t]);const P=i()(t,"accessKey","");return(0,m.jsxs)(p.A,{onClose:()=>{s()},modalOpen:j,title:"Set Policies",children:[(0,m.jsxs)(r.Hbc,{withBorders:!1,containerPadding:!1,children:[(1===(null===n||void 0===n?void 0:n.length)||null!=t)&&(0,m.jsxs)(l.Fragment,{children:[(0,m.jsx)(r.EmB,{label:"Selected "+(null!==n?"Group":"User"),sx:{width:"100%"},children:null!==n?n[0]:P}),(0,m.jsx)(r.EmB,{label:"Current Policy",sx:{width:"100%"},children:f.join(", ")})]}),n&&(null===n||void 0===n?void 0:n.length)>1&&(0,m.jsx)(r.EmB,{label:"Selected Groups",sx:{width:"100%"},children:n.join(", ")}),(0,m.jsx)(r.xA9,{item:!0,xs:12,children:(0,m.jsx)(x.A,{selectedPolicy:A})})]}),(0,m.jsxs)(r.xA9,{item:!0,xs:12,sx:d.Uz.modalButtonBar,children:[(0,m.jsx)(r.$nd,{id:"reset",type:"button",variant:"regular",onClick:()=>{S(f),g((0,u.Gy)(f))},label:"Reset"}),(0,m.jsx)(r.$nd,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:b,onClick:()=>{let e=null,l=null;null!==n?l=n:(e=[" "],null!==t&&(e=[t.accessKey])),y(!0),h.A.invoke("PUT","/api/v1/set-policy-multi",{name:C,groups:l,users:e}).then((()=>{y(!1),s()})).catch((e=>{y(!1),g((0,c.Dy)(e))}))},label:"Save"})]}),b&&(0,m.jsx)(r.xA9,{item:!0,xs:12,children:(0,m.jsx)(r.z21,{})})]})}},8185:(e,s,t)=>{t.d(s,{Hw:()=>n,LA:()=>l,SO:()=>i,rY:()=>o});const l=(e,s)=>{if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeye.name>s.name?1:e.namee>s?1:ee.policy>s.policy?1:e.policy.\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { ModalBox, Snackbar } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport MainError from \"../MainError/MainError\";\n\ninterface IModalProps {\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n titleIcon?: React.ReactNode;\n iconColor?: \"default\" | \"delete\" | \"accept\";\n sx?: CSSObject;\n}\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n wideLimit = true,\n titleIcon = null,\n iconColor = \"default\",\n sx,\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 let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (message === \"\" || (message && message.length < 5)) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default ModalWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n setLoadingDelete(true);\n api.group\n .removeGroup(group)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={loadingDelete}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddMembersToGroupIcon, Button, FormLayout, Grid, ReadBox } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ntype UserPickerModalProps = {\n title?: string;\n preSelectedUsers?: string[];\n selectedGroup?: string;\n open: boolean;\n onClose: () => void;\n onSaveClick: () => void;\n groupStatus?: string;\n};\n\nconst AddGroupMember = ({\n title = \"\",\n groupStatus = \"enabled\",\n preSelectedUsers = [],\n selectedGroup = \"\",\n open,\n onClose,\n}: UserPickerModalProps) => {\n const dispatch = useAppDispatch();\n const [selectedUsers, setSelectedUsers] = useState(preSelectedUsers);\n\n function addMembersToGroup() {\n return api.group\n .updateGroup(selectedGroup, {\n members: selectedUsers,\n status: groupStatus,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n onClose();\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n return (\n }\n >\n \n \n {selectedGroup}\n \n \n \n \n \n \n );\n};\n\nexport default AddGroupMember;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n PageLayout,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Group } from \"api/consoleApi\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n editGroupMembersPermissions,\n enableDisableGroupPermissions,\n getGroupPermissions,\n IAM_PAGES,\n listUsersPermissions,\n permissionTooltipHelper,\n setGroupPoliciesPermissions,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport SetPolicy from \"../Policies/SetPolicy\";\nimport AddGroupMember from \"./AddGroupMember\";\nimport DeleteGroup from \"./DeleteGroup\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nconst formatPolicy = (policy: string = \"\"): string[] => {\n if (policy.length <= 0) return [];\n return policy.split(\",\");\n};\n\nconst GroupsDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const [groupDetails, setGroupDetails] = useState({});\n const [policyOpen, setPolicyOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [memberFilter, setMemberFilter] = useState(\"\");\n const [currentTab, setCurrentTab] = useState(\"members\");\n\n const { members = [], policy = \"\", status: groupEnabled } = groupDetails;\n\n const filteredMembers = members.filter((elementItem) =>\n elementItem.includes(memberFilter),\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"group_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (params.groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [params.groupName]);\n\n const groupPolicies = formatPolicy(policy);\n const isGroupEnabled = groupEnabled === \"enabled\";\n const memberActionText = members.length > 0 ? \"Edit Members\" : \"Add Members\";\n\n const getGroupDetails = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n );\n\n const canEditGroupMembers = hasPermission(\n CONSOLE_UI_RESOURCE,\n editGroupMembersPermissions,\n true,\n );\n\n const canSetPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n setGroupPoliciesPermissions,\n true,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n function fetchGroupInfo() {\n if (getGroupDetails) {\n api.group\n .groupInfo(params.groupName || \"\")\n .then((res) => {\n setGroupDetails(res.data);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setGroupDetails({});\n });\n }\n }\n\n function toggleGroupStatus(nextStatus: boolean) {\n return api.group\n .updateGroup(params.groupName || \"\", {\n members: members,\n status: nextStatus ? \"enabled\" : \"disabled\",\n })\n .then(() => {\n fetchGroupInfo();\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n const groupsTabContent = (\n {\n dispatch(setHelpName(\"groups_members\"));\n }}\n >\n \n {\n setMemberFilter(searchText);\n }}\n value={memberFilter}\n sx={{\n maxWidth: 280,\n }}\n />\n \n \n }\n onClick={() => {\n setUsersOpen(true);\n }}\n disabled={!canEditGroupMembers}\n />\n \n \n \n }\n >\n Members\n \n \n \n \n {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURIComponent(userName)}`,\n );\n },\n isDisabled: !viewUser,\n },\n ]}\n columns={[{ label: \"Access Key\" }]}\n selectedItems={[]}\n isLoading={false}\n records={filteredMembers}\n entityName=\"Users\"\n />\n \n \n \n \n );\n\n const policiesTabContent = (\n \n {\n dispatch(setHelpName(\"groups_policies\"));\n }}\n >\n \n }\n onClick={() => {\n setPolicyOpen(true);\n }}\n disabled={!canSetPolicies}\n />\n \n }\n >\n Policies\n \n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURIComponent(policy)}`,\n );\n },\n isDisabled: !canViewPolicy,\n },\n ]}\n columns={[{ label: \"Policy\" }]}\n isLoading={false}\n records={groupPolicies}\n entityName=\"Policies\"\n />\n \n \n \n );\n\n return (\n \n {policyOpen ? (\n {\n setPolicyOpen(false);\n fetchGroupInfo();\n dispatch(setSelectedPolicies([]));\n }}\n />\n ) : null}\n\n {usersOpen ? (\n {}}\n title={memberActionText}\n groupStatus={groupEnabled}\n preSelectedUsers={members}\n open={usersOpen}\n onClose={() => {\n setUsersOpen(false);\n fetchGroupInfo();\n }}\n />\n ) : null}\n\n {deleteOpen && (\n {\n setDeleteOpen(false);\n if (isDelSuccess) {\n navigate(IAM_PAGES.GROUPS);\n }\n }}\n />\n )}\n \n navigate(IAM_PAGES.GROUPS)}\n />\n \n }\n actions={}\n />\n \n \n \n \n \n }\n title={params.groupName || \"\"}\n subTitle={null}\n bottomBorder\n actions={\n \n Group Status:\n \n {isGroupEnabled ? \"Enabled\" : \"Disabled\"}\n \n \n \n {\n toggleGroupStatus(!isGroupEnabled);\n }}\n switchOnly\n />\n \n \n\n \n }\n onClick={() => {\n setDeleteOpen(true);\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n \n \n );\n};\n\nexport default GroupsDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\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 setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\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 { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\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 // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\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 { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n users = [\" \"];\n\n if (selectedUser !== null) {\n users = [selectedUser.accessKey];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURIComponent(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","onClose","modalOpen","title","children","wideLimit","titleIcon","iconColor","sx","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","useState","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","type","detailedErrorMsg","length","_jsxs","ModalBox","open","widthLimit","_jsx","MainError","isModal","Snackbar","closeSnackBar","mode","variant","autoHideDuration","condensed","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","loadingDelete","setLoadingDelete","renderGroups","map","group","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onDeleteGroups","api","removeGroup","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","confirmationContent","Fragment","groupStatus","preSelectedUsers","selectedGroup","selectedUsers","setSelectedUsers","ModalWrapper","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","onClick","updateGroup","members","status","setModalErrorSnackMessage","error","GroupsDetails","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","policyOpen","setPolicyOpen","usersOpen","setUsersOpen","setDeleteOpen","memberFilter","setMemberFilter","currentTab","setCurrentTab","policy","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","setHelpName","groupName","fetchGroupInfo","groupPolicies","arguments","undefined","split","formatPolicy","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","value","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","encodeURIComponent","isDisabled","columns","selectedItems","records","entityName","policiesTabContent","IAMPoliciesIcon","POLICIES","SetPolicy","selectedUser","closeModalAndRefresh","setSelectedPolicies","AddGroupMember","onSaveClick","DeleteGroup","isDelSuccess","GROUPS","PageHeaderWrapper","BackLink","HelpMenu","PageLayout","ScreenTitle","GroupsIcon","subTitle","bottomBorder","fontSize","alignItems","style","fontWeight","enableDisableGroupPermissions","matchAll","Switch","indicatorLabels","checked","name","nextStatus","switchOnly","TrashIcon","Tabs","options","tabConfig","content","currentTabOrPath","onTabClick","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","ProgressBar","elementKey","onSelect","e","targetD","target","elements","push","element","idField","customPaperHeight","textAlign","padding","noTitle","currentPolicies","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","resetSelection","color","setPolicyAction","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/1370.7d88b85a.chunk.js b/web-app/build/static/js/1370.7d88b85a.chunk.js
deleted file mode 100644
index ef5a4cc5d..000000000
--- a/web-app/build/static/js/1370.7d88b85a.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1370],{41206:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(65043),o=r(89923),i=r(61476),s=r.n(i),a=r(6681),l=r(70579);const c=e=>{let{value:t,label:r="",tooltip:i="",mode:c="json",onChange:d,editorHeight:p=250,helptip:u}=e;return(0,l.jsx)(o.BYM,{value:t,onChange:e=>d(e),mode:c,tooltip:i,editorHeight:p,label:r,helpTools:(0,l.jsx)(n.Fragment,{children:(0,l.jsx)(a.A,{tooltip:"Copy to Clipboard",children:(0,l.jsx)(s(),{text:t,children:(0,l.jsx)(o.$nd,{type:"button",id:"copy-code-mirror",icon:(0,l.jsx)(o.TdU,{}),color:"primary",variant:"regular"})})})}),helpTip:u,helpTipPlacement:"right"})}},71435:(e,t,r)=>{"use strict";r.d(t,{CS:()=>s,Ez:()=>n,WJ:()=>o,Zb:()=>i});const n={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},o=(e,t)=>e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0,i=e=>{switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},s=(e,t)=>e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0},81370:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(65043),o=r(22166),i=r(73216),s=r(89923),a=r(77403),l=r(41206),c=r(99161),d=r(77938),p=r(72237),u=r(64681),x=r(71435),h=r(70579);const f={display:"grid",gridTemplateColumns:"70px 1fr",gap:15},m=e=>{let{search:t="",children:r=""}=e;const n=new RegExp(`(${function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(t)})`,"i"),o=String(r).split(n);return t?o.map(((e,t)=>n.test(e)?(0,h.jsx)("mark",{children:e},t):e)):r},y=e=>{let{policyStatements:t}=e;const[r,o]=(0,n.useState)("");return(0,h.jsxs)(s.xA9,{container:!0,children:[(0,h.jsx)(s.xA9,{item:!0,xs:12,children:(0,h.jsxs)(s.xA9,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,h.jsx)(s.V7x,{content:(0,h.jsxs)(n.Fragment,{children:["Define which actions are permitted on a specified resource. Learn more about"," ",(0,h.jsx)("a",{target:"blank",href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html",children:"IAM conditional statements"}),"."]}),placement:"right",children:(0,h.jsx)(s.xA9,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"})}),(0,h.jsx)(s.xA9,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,h.jsx)(u.A,{placeholder:"Search",onChange:o,value:r,sx:{maxWidth:380}})})]})}),!t&&(0,h.jsx)(n.Fragment,{children:"Policy has no statements"}),t&&(0,h.jsx)(s.xA9,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map(((e,t)=>{const n=e.Effect,o="Allow"===n;return(0,h.jsxs)(s.azJ,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,h.jsxs)(s.azJ,{sx:f,children:[(0,h.jsx)(s.azJ,{className:"label",children:"Effect:"}),(0,h.jsxs)(s.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:o?x.Ez.GREEN:x.Ez.RED,height:"14px",width:"14px"}},children:[o?(0,h.jsx)(s.xhy,{}):(0,h.jsx)(s.aaC,{}),n]})]}),(0,h.jsxs)(s.xA9,{container:!0,sx:{gap:15},children:[(0,h.jsxs)(s.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(s.azJ,{className:"label",children:"Actions:"}),(0,h.jsx)(s.azJ,{children:e.Action&&e.Action.map(((e,n)=>(0,h.jsx)("div",{children:(0,h.jsx)(m,{search:r,children:e})},`${t}-r-${n}`)))})]}),(0,h.jsxs)(s.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(s.azJ,{className:"label",children:"Resources:"}),(0,h.jsx)(s.azJ,{children:e.Resource&&e.Resource.map(((e,n)=>(0,h.jsxs)("div",{children:[" ",(0,h.jsx)(m,{search:r,children:e})]},`${t}-r-${n}`)))})]})]})]},`${t}`)}))})]})};var b=r(64159),g=r(46537),j=r(21383),v=r(6681),C=r(48793),w=r(56629),A=r(88617);const P=(0,p.A)(n.lazy((()=>r.e(4676).then(r.bind(r,4676))))),O=()=>{const e=(0,j.jL)(),t=(0,i.Zp)(),r=(0,i.g)(),p=(0,o.d4)(g.s$),[x,f]=(0,n.useState)(null),[m,O]=(0,n.useState)([]),[S,_]=(0,n.useState)([]),[E,R]=(0,n.useState)([]),[k,D]=(0,n.useState)(!1),M=r.policyName||"",[T,F]=(0,n.useState)(""),[z,I]=(0,n.useState)(!0),[N,$]=(0,n.useState)(""),[U,B]=(0,n.useState)(!0),[J,L]=(0,n.useState)(""),[G,H]=(0,n.useState)(!0),[W,Z]=(0,n.useState)(!1),[V,Y]=(0,n.useState)("summary"),K=p&&p.includes("ldap-idp")||!1,Q=(0,d._)(c.Ms,c.qA,!0),X=(0,d._)(c.Ms,c.Oh,!0),q=(0,d._)(c.Ms,c.x6,!0),ee=(0,d._)(c.Ms,c.Ld,!0),te=(0,d._)(c.Ms,c.yv,!0),re=(0,d._)(c.Ms,c.uA,!0),ne=(0,d._)(c.Ms,c.nr,!0);(0,n.useEffect)((()=>{z&&(z&&(te?w.F.policy.policyInfo(M).then((e=>{if(e.data){var t,r;f(e.data),F(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");const n=JSON.parse(null===(r=e.data)||void 0===r?void 0:r.policy);O(n.Statement)}I(!1)})).catch((t=>{e((0,b.C9)(t)),I(!1)})):I(!1)),U&&(q&&!K?w.F.policies.listUsersForPolicy(M).then((e=>{var t;_(null!==(t=e.data)&&void 0!==t?t:[]),B(!1)})).catch((t=>{e((0,b.C9)(t)),B(!1)})):B(!1)),G&&(Q&&!K?w.F.policies.listGroupsForPolicy(M).then((e=>{var t;R(null!==(t=e.data)&&void 0!==t?t:[]),H(!1)})).catch((t=>{e((0,b.C9)(t)),H(!1)})):H(!1)))}),[M,z,U,G,_,R,F,f,B,H,q,Q,te,K,e]);const oe=""!==M.trim(),ie=[{type:"view",onClick:e=>{t(`${c.zZ.USERS}/${encodeURIComponent(e)}`)},disableButtonFunction:()=>!ee}],se=S.filter((e=>e.includes(N))),ae=[{type:"view",onClick:e=>{t(`${c.zZ.GROUPS}/${encodeURIComponent(e)}`)},disableButtonFunction:()=>!X}],le=E.filter((e=>e.includes(J))),ce=()=>{B(!0),H(!0),I(!0)};return(0,n.useEffect)((()=>{e((0,b.ph)("policy_details_summary"))}),[]),(0,h.jsxs)(n.Fragment,{children:[W&&(0,h.jsx)(P,{deleteOpen:W,selectedPolicy:M,closeDeleteModalAndRefresh:e=>{Z(!1),t(c.zZ.POLICIES)}}),(0,h.jsx)(C.A,{label:(0,h.jsx)(n.Fragment,{children:(0,h.jsx)(s.EGL,{label:"Policy",onClick:()=>t(c.zZ.POLICIES)})}),actions:(0,h.jsx)(A.A,{})}),(0,h.jsxs)(s.Mxu,{children:[(0,h.jsx)(s.lcx,{icon:(0,h.jsx)(s.n$X,{width:40}),title:M,subTitle:(0,h.jsx)(n.Fragment,{children:"IAM Policy"}),actions:(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(d.R,{scopes:[c.OV.ADMIN_DELETE_POLICY],resource:c.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(v.A,{tooltip:re?"":(0,c.vj)(c.uA,"delete Policies"),children:(0,h.jsx)(s.$nd,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,h.jsx)(s.ucK,{}),onClick:()=>{Z(!0)},disabled:!re})})}),(0,h.jsx)(v.A,{tooltip:"Refresh",children:(0,h.jsx)(s.$nd,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,h.jsx)(s.fNY,{}),onClick:()=>{ce()}})})]}),sx:{marginBottom:15}}),(0,h.jsx)(s.azJ,{children:(0,h.jsx)(s.tUM,{options:[{tabConfig:{label:"Summary",disabled:!te,id:"summary"},content:(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(s.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_summary")),children:[(0,h.jsx)(s._xt,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,h.jsx)(s.azJ,{withBorders:!0,children:(0,h.jsx)(y,{policyStatements:m})})]})})},{tabConfig:{label:"Users",disabled:!q||K,id:"users"},content:(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(s.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_users")),children:[(0,h.jsx)(s._xt,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,h.jsxs)(s.xA9,{container:!0,children:[S.length>0&&(0,h.jsx)(s.xA9,{item:!0,xs:12,sx:{...a._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:N,placeholder:"Search Users",id:"search-resource",onChange:e=>{$(e)}})}),(0,h.jsx)(s.bQt,{itemActions:ie,columns:[{label:"Name",elementKey:"name"}],isLoading:U,records:se,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!Q||K,id:"groups"},content:(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(s.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_groups")),children:[(0,h.jsx)(s._xt,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,h.jsxs)(s.xA9,{container:!0,children:[E.length>0&&(0,h.jsx)(s.xA9,{item:!0,xs:12,sx:{...a._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:N,placeholder:"Search Groups",id:"search-resource",onChange:e=>{L(e)}})}),(0,h.jsx)(s.bQt,{itemActions:ae,columns:[{label:"Name",elementKey:"name"}],isLoading:G,records:le,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!te,id:"raw-policy"},content:(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(s.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_policy")),children:[(0,h.jsx)(s.V7x,{content:(0,h.jsx)(n.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,h.jsx)(s._xt,{children:"Raw Policy"})}),(0,h.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),k||(D(!0),ne?w.F.policies.addPolicy({name:M,policy:T}).then((t=>{D(!1),e((0,b.Hk)("Policy successfully updated")),ce()})).catch((t=>{D(!1),e((0,b.C9)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):D(!1))},children:(0,h.jsxs)(s.xA9,{container:!0,children:[(0,h.jsx)(s.xA9,{item:!0,xs:12,children:(0,h.jsx)(l.A,{value:T,onChange:e=>{ne&&F(e)},editorHeight:"350px",helptip:(0,h.jsx)(n.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,h.jsxs)(s.xA9,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!x&&(0,h.jsx)(s.$nd,{type:"button",variant:"regular",id:"clear-policy",onClick:()=>{F("{}")},children:"Clear"}),(0,h.jsx)(d.R,{scopes:[c.OV.ADMIN_CREATE_POLICY],resource:c.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(v.A,{tooltip:ne?"":(0,c.vj)(c.nr,"edit a Policy"),children:(0,h.jsx)(s.$nd,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:k||!oe||!ne,label:"Save"})})})]}),k&&(0,h.jsx)(s.xA9,{item:!0,xs:12,children:(0,h.jsx)(s.z21,{})})]})})]})})}],currentTabOrPath:V,onTabClick:e=>Y(e)})})]})]})}},75270:(e,t,r)=>{"use strict";var n=r(40139),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,i,s,a,l,c,d=!1;t||(t={}),r=t.debug||!1;try{if(s=n(),a=document.createRange(),l=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),"undefined"===typeof n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(c),a.selectNodeContents(c),l.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(p){r&&console.error("unable to copy using execCommand: ",p),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(p){r&&console.error("unable to copy using clipboardData: ",p),r&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(a):l.removeAllRanges()),c&&document.body.removeChild(c),s()}return d}},24480:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=a(r(65043)),i=a(r(75270)),s=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function p(e,t){for(var r=0;r{"use strict";var n=r(24480).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},40139:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\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: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid, HelpTip } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Define which actions are permitted on a specified resource.\n Learn more about{\" \"}\n \n IAM conditional statements\n \n .\n \n }\n placement=\"right\"\n >\n \n Statements\n \n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n \n \n Adding groups lets you assign IAM policies to multiple users at once.\n \n Users inherit access permissions to data and resources through the\n groups they belong to.\n \n \n A user can be a member of multiple groups.\n \n \n Groups provide a simplified method for managing shared permissions\n among users with common access patterns and workloads. Client’s cannot\n authenticate to a MinIO deployment using a group as an identity.\n \n \n\n \n } description={`Add Users to Group`} />\n \n Select from the list of displayed users to assign users to the new\n group at creation. These users inherit the policies assigned to the\n group.\n \n }\n description={`Assign Custom IAM Policies for Group`}\n />\n \n You can add policies to the group by selecting it from the Groups view\n after creation. The Policy view lets you manage the assigned policies\n for the group.\n \n \n \n );\n};\n\nexport default AddGroupHelpBox;\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 { useNavigate } from \"react-router-dom\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport {\n BackLink,\n Button,\n CreateGroupIcon,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport AddGroupHelpBox from \"./AddGroupHelpBox\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst AddGroupScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const [groupName, setGroupName] = useState(\"\");\n const [saving, isSaving] = useState(false);\n const [selectedUsers, setSelectedUsers] = useState([]);\n const [validGroup, setValidGroup] = useState(false);\n\n useEffect(() => {\n setValidGroup(groupName.trim() !== \"\");\n }, [groupName, selectedUsers]);\n\n useEffect(() => {\n if (saving) {\n const saveRecord = () => {\n api.groups\n .addGroup({\n group: groupName,\n members: selectedUsers,\n })\n .then((res) => {\n isSaving(false);\n navigate(`${IAM_PAGES.GROUPS}`);\n })\n .catch((err) => {\n isSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n saveRecord();\n }\n }, [saving, groupName, selectedUsers, dispatch, navigate]);\n\n //Fetch Actions\n const setSaving = (event: React.FormEvent) => {\n event.preventDefault();\n\n isSaving(true);\n };\n\n const resetForm = () => {\n setGroupName(\"\");\n setSelectedUsers([]);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_group\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(IAM_PAGES.GROUPS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n \n \n \n \n );\n};\n\nexport default AddGroupScreen;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\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 setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","AddGroupHelpBox","flex","border","borderRadius","flexFlow","padding","marginTop","fontWeight","alignItems","HelpIconFilled","paddingTop","paddingBottom","GroupsIcon","IAMPoliciesIcon","AddGroupScreen","dispatch","useAppDispatch","navigate","useNavigate","groupName","setGroupName","useState","saving","isSaving","selectedUsers","setSelectedUsers","validGroup","setValidGroup","useEffect","trim","saveRecord","api","groups","addGroup","group","members","then","res","IAM_PAGES","GROUPS","catch","err","setErrorSnackMessage","errorToHandler","error","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","title","CreateGroupIcon","helpBox","noValidate","autoComplete","onSubmit","event","preventDefault","InputBox","id","name","autoFocus","value","onChange","e","target","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","type","variant","resetForm","disabled","ProgressBar","records","setRecords","loading","isLoading","filter","setFilter","fetchUsers","useCallback","users","listUsers","get","data","sort","usersSort","setModalErrorSnackMessage","selUsers","filteredRecords","elementItem","accessKey","includes","className","length","SearchBox","placeholder","DataTable","columns","elementKey","onSelect","targetD","checked","elements","push","element","selectedItems","entityName","idField","customPaperHeight","textAlign","a","b","policySort","stringSort","policyDetailsSort","policy"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/153.0edba926.chunk.js b/web-app/build/static/js/153.0edba926.chunk.js
new file mode 100644
index 000000000..a79e3ba36
--- /dev/null
+++ b/web-app/build/static/js/153.0edba926.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[153],{5153:(e,t,n)=>{n.r(t),n.d(t,{default:()=>f});var o=n(5043),r=n(9923),a=n(6969),l=n(4574),i=n(3097),s=n.n(i),c=n(579);const p=e=>(0,c.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"min-icon",fill:"currentcolor",...e,children:(0,c.jsx)("polygon",{points:"8.5 16.5 21.5 3.6 23.4 5.5 8.5 20.4 .6 12.5 2.5 10.5 8.5 16.5"})}),d=l.Ay.div((e=>{let{theme:t}=e;return{display:"grid",gridTemplateColumns:"repeat(3, minmax(350px, 400px))",justifyContent:"flex-start",marginTop:30,marginLeft:30,"& > div":{borderBottom:`${s()(t,"borderColor","#EAEAEA")} 1px solid`,padding:"25px 40px",justifyContent:"center","&.openSource":{borderRight:"#002562 2px solid",borderLeft:"#002562 2px solid",position:"relative","&.first:before":{content:"' '",width:"calc(100% + 4px)",height:16,display:"block",backgroundColor:"#001F55",position:"absolute",top:-14,left:-2,border:"#002562 2px solid",borderBottom:0,borderTopLeftRadius:12,borderTopRightRadius:12},"&.last":{paddingBottom:30,"&:after":{content:"' '",width:"calc(100% + 4px)",height:16,display:"block",position:"absolute",bottom:-14,left:-2,border:"#002562 2px solid",borderTop:0,borderBottomLeftRadius:12,borderBottomRightRadius:12}}},"&.feature-information":{textAlign:"center"},"&.feature-label":{paddingLeft:5},"&.noBorderBottom":{borderBottom:0}},"& .planName":{fontWeight:600,fontSize:32,marginBottom:24,textAlign:"center",marginTop:8},"& .planIcon":{height:100,display:"flex",alignItems:"flex-start",justifyContent:"center","& svg":{height:80},"&.commercial":{"& svg":{height:70}}},"& .planDescription":{display:"flex",justifyContent:"center"}}})),m=()=>{const e=(e,t,n)=>{let o=e;return(0,c.jsx)(r.$nd,{id:`license-action-${e}`,variant:n,sx:{marginTop:"12px",width:"80%",height:"55px"},onClick:e=>{e.preventDefault(),window.open(`${o}?ref=con`,"_blank")},label:t})},t=e=>e?(0,c.jsxs)(o.Fragment,{children:[e.content,e.isCheck&&(0,c.jsx)(p,{style:{width:16,height:16}})]}):(0,c.jsx)(o.Fragment,{});return(0,c.jsx)(o.Fragment,{children:(0,c.jsxs)(d,{children:[[null,...a.qZ].map(((e,t)=>(0,c.jsx)(r.azJ,{className:""+(1===t?"openSource first":""),children:null!==e&&(0,c.jsxs)(r.azJ,{children:[(0,c.jsx)(r.azJ,{className:"planName",children:e.planName}),(0,c.jsx)(r.azJ,{className:"planIcon "+("commercial"===e.planType?"commercial":""),children:null===e||void 0===e?void 0:e.planIcon}),(0,c.jsx)(r.azJ,{className:"planDescription",children:null===e||void 0===e?void 0:e.planDescription})]})}))),a.c_.map(((e,n)=>{const l=n===a.c_.length-1?"noBorderBottom":"";return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)(r.azJ,{className:`feature-label ${l}`,children:e.featureLabel}),(0,c.jsx)(r.azJ,{className:`feature-information openSource ${l}`,children:t(e.featurePlans.openSource||null)}),(0,c.jsx)(r.azJ,{className:`feature-information ${l}`,children:t(e.featurePlans.eosPlus||null)})]})})),[null,...a.qZ].map(((t,n)=>(0,c.jsx)(r.azJ,{className:(1===n?"openSource last":"")+" noBorderBottom",sx:{display:"flex",justifyContent:"center"},children:t&&e("https://min.io/signup","commercial"===t.planType?"Upgrade":"Join Slack","commercial"===t.planType?"callAction":"regular")})))]})})};var u=n(8793),x=n(4159),h=n(3635);const f=()=>{const e=(0,h.j)();return(0,o.useEffect)((()=>{e((0,x.ph)("license"))}),[]),(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)(u.A,{label:"MinIO License and Support Plan"}),(0,c.jsx)(r.Mxu,{children:(0,c.jsx)(m,{})})]})}}}]);
+//# sourceMappingURL=153.0edba926.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/153.0edba926.chunk.js.map b/web-app/build/static/js/153.0edba926.chunk.js.map
new file mode 100644
index 000000000..617e51f6b
--- /dev/null
+++ b/web-app/build/static/js/153.0edba926.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/153.0edba926.chunk.js","mappings":"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","sources":["screens/Console/License/CheckIcon.tsx","screens/Console/License/LicensePlans.tsx","screens/Console/License/License.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2024 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nconst CheckIcon = (props: SVGProps) => (\n \n);\n\nexport default CheckIcon;\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, Button } from \"mds\";\nimport { FEATURE_ITEMS, FeatureItem, LICENSE_PLANS_INFORMATION } from \"./utils\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport CheckIcon from \"./CheckIcon\";\n\nconst LicensesInformation = styled.div(({ theme }) => ({\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, minmax(350px, 400px))\",\n justifyContent: \"flex-start\",\n marginTop: 30,\n marginLeft: 30,\n \"& > div\": {\n borderBottom: `${get(theme, \"borderColor\", \"#EAEAEA\")} 1px solid`,\n padding: \"25px 40px\",\n justifyContent: \"center\",\n \"&.openSource\": {\n borderRight: `#002562 2px solid`,\n borderLeft: `#002562 2px solid`,\n position: \"relative\",\n \"&.first:before\": {\n content: \"' '\",\n width: \"calc(100% + 4px)\",\n height: 16,\n display: \"block\",\n backgroundColor: \"#001F55\",\n position: \"absolute\",\n top: -14,\n left: -2,\n border: `#002562 2px solid`,\n borderBottom: 0,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n },\n \"&.last\": {\n paddingBottom: 30,\n \"&:after\": {\n content: \"' '\",\n width: \"calc(100% + 4px)\",\n height: 16,\n display: \"block\",\n position: \"absolute\",\n bottom: -14,\n left: -2,\n border: `#002562 2px solid`,\n borderTop: 0,\n borderBottomLeftRadius: 12,\n borderBottomRightRadius: 12,\n },\n },\n },\n \"&.feature-information\": {\n textAlign: \"center\",\n },\n \"&.feature-label\": {\n paddingLeft: 5,\n },\n \"&.noBorderBottom\": {\n borderBottom: 0,\n },\n },\n \"& .planName\": {\n fontWeight: 600,\n fontSize: 32,\n marginBottom: 24,\n textAlign: \"center\",\n marginTop: 8,\n },\n \"& .planIcon\": {\n height: 100,\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n \"& svg\": {\n height: 80,\n },\n \"&.commercial\": {\n \"& svg\": {\n height: 70,\n },\n },\n },\n \"& .planDescription\": {\n display: \"flex\",\n justifyContent: \"center\",\n },\n}));\n\nconst LicensePlans = () => {\n let currentPlan = \"community\";\n\n const getButton = (link: string, btnText: string, variant: any) => {\n let linkToNav =\n currentPlan !== \"community\" ? \"https://subnet.min.io\" : link;\n return (\n {\n e.preventDefault();\n\n window.open(`${linkToNav}?ref=con`, \"_blank\");\n }}\n label={btnText}\n />\n );\n };\n\n const renderFeatureInformation = (content: FeatureItem | null) => {\n if (content) {\n return (\n \n {content.content}\n {content.isCheck && }\n \n );\n }\n return ;\n };\n\n return (\n \n \n {[null, ...LICENSE_PLANS_INFORMATION].map((element, index) => {\n return (\n \n {element !== null && (\n \n {element.planName}\n \n {element?.planIcon}\n \n \n {element?.planDescription}\n \n \n )}\n \n );\n })}\n {FEATURE_ITEMS.map((feature, index) => {\n const lastItem =\n index === FEATURE_ITEMS.length - 1 ? \"noBorderBottom\" : \"\";\n\n return (\n \n \n {feature.featureLabel}\n \n \n {renderFeatureInformation(\n feature.featurePlans.openSource || null,\n )}\n \n \n {renderFeatureInformation(feature.featurePlans.eosPlus || null)}\n \n \n );\n })}\n {[null, ...LICENSE_PLANS_INFORMATION].map((element, index) => {\n return (\n \n {element &&\n getButton(\n `https://min.io/signup`,\n element.planType === \"commercial\" ? \"Upgrade\" : \"Join Slack\",\n element.planType === \"commercial\" ? \"callAction\" : \"regular\",\n )}\n \n );\n })}\n \n \n );\n};\n\nexport default LicensePlans;\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 { PageLayout } from \"mds\";\nimport LicensePlans from \"./LicensePlans\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst License = () => {\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"license\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n \n \n \n \n );\n};\n\nexport default License;\n"],"names":["props","_jsx","xmlns","viewBox","className","fill","children","points","LicensesInformation","styled","div","_ref","theme","display","gridTemplateColumns","justifyContent","marginTop","marginLeft","borderBottom","get","padding","borderRight","borderLeft","position","content","width","height","backgroundColor","top","left","border","borderTopLeftRadius","borderTopRightRadius","paddingBottom","bottom","borderTop","borderBottomLeftRadius","borderBottomRightRadius","textAlign","paddingLeft","fontWeight","fontSize","marginBottom","alignItems","LicensePlans","getButton","link","btnText","variant","linkToNav","Button","id","sx","onClick","e","preventDefault","window","open","label","renderFeatureInformation","_jsxs","Fragment","isCheck","CheckIcon","style","LICENSE_PLANS_INFORMATION","map","element","index","Box","planName","planType","planIcon","planDescription","FEATURE_ITEMS","feature","lastItem","length","featureLabel","featurePlans","openSource","eosPlus","License","dispatch","useAppDispatch","useEffect","setHelpName","PageHeaderWrapper","PageLayout"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/182.6e133743.chunk.js b/web-app/build/static/js/182.6e133743.chunk.js
deleted file mode 100644
index 9691dd1c6..000000000
--- a/web-app/build/static/js/182.6e133743.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[182,614],{30614:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var s=n(65043),o=n(94141),i=n(89923),a=n(56629),l=n(53518),r=n(77403),d=n(64159),c=n(21383),u=n(70579);const h=e=>{let{modalOpen:t,onClose:n,bucket:h,prefilledRoute:m}=e;const x=(0,c.jL)(),[p,j]=(0,s.useState)(""),[b,g]=(0,s.useState)("readonly");(0,s.useEffect)((()=>{m&&j(m)}),[m]);return(0,u.jsx)(o.A,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:n,titleIcon:(0,u.jsx)(i.No_,{}),children:(0,u.jsxs)(i.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(i.cl_,{value:p,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:e=>{j(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,u.jsx)(i.l6P,{id:"access",name:"Access",onChange:e=>{g(e)},label:"Access",value:b,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1,helpTip:(0,u.jsx)(s.Fragment,{children:"Select the desired level of access available to unauthenticated Users"}),helpTipPlacement:"right"}),(0,u.jsxs)(i.xA9,{item:!0,xs:12,sx:r.Uz.modalButtonBar,children:[(0,u.jsx)(i.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{j(""),g("readonly")},label:"Clear"}),(0,u.jsx)(i.$nd,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===p.trim(),onClick:()=>{a.F.bucket.setAccessRuleWithBucket(h,{prefix:p,access:b}).then((e=>{x((0,d.Hk)("Access Rule added successfully")),n()})).catch((e=>{x((0,d.C9)((0,l.S)(e.error))),n()}))},label:"Save"})]})]})})}},182:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ge});var s=n(65043),o=n(22166),i=n(73216),a=n(56629),l=n(21383),r=n(99161),d=n(6035),c=n(33097),u=n.n(c),h=n(89923),m=n(53518),x=n(68424),p=n(24241),j=n(56483),b=n(61476),g=n.n(b),f=n(94574),v=n(35475),_=n(77938),S=n(72237),O=n(64159);const w=e=>(e.match(/\.([^.]*?)(?=\?|#|$)/)||[])[1],T=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const s=Object.keys(e).reduce(((n,s)=>(w(s)&&s.includes(t)&&(n[s]=e[s]),n)),{});return Object.keys(s).filter((e=>{const o=s[e].some((e=>n.find((t=>{let n=!1;if(-1!==t.indexOf("*")){const s=t.substring(0,t.length-1);n=e.includes(s)}return n||e===t})))),i=e.substring(0,e.indexOf("/*."));return o&&(i===`arn:aws:s3:::${t}`&&"arn:aws:s3:::*"!==e)}))};var C=n(70579);const y=(0,S.A)(s.lazy((()=>n.e(7774).then(n.bind(n,97774))))),E=f.Ay.div((()=>({display:"flex","& .additionalOptions":{paddingRight:"10px",display:"flex",alignItems:"center",[`@media (max-width: ${h.nmC.lg}px)`]:{display:"none"}},"& .slashSpacingStyle":{margin:"0 5px"}}))),I=e=>{let{bucketName:t,internalPaths:n,hidePathButton:a,additionalOptions:c}=e;const u=(0,l.jL)(),m=(0,i.Zp)(),x=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),p=(0,o.d4)((e=>e.objectBrowser.versionsMode)),b=(0,o.d4)((e=>e.objectBrowser.versionedFile)),f=(0,o.d4)((e=>e.system.anonymousMode)),[S,w]=(0,s.useState)(!1),[I,A]=(0,s.useState)(!1),N=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],k=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{}));let B=n;""!==n&&(B=`/${n}`);const F=B.split("/").filter((e=>""!==e)),L=F.length-1,V=t+B||t,D=T(k,V,N);(0,s.useEffect)((()=>{A(!1),Object.keys(k).forEach((e=>{e.includes(V)&&e.includes("/*")&&A(!0)}))}),[V,n,k]);const R=(0,_._)([V,...D],N)||f||I;let P=F.map(((e,n)=>{const o=`${F.slice(0,n+1).join("/")}/`,i=`/browser/${encodeURIComponent(t)}/${o?`${encodeURIComponent(o)}`:""}`;return n===L&&e===b?null:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("span",{className:"slashSpacingStyle",children:"/"}),n===L?(0,C.jsx)("span",{style:{cursor:"default",whiteSpace:"pre"},children:(0,j.Tw)(e)}):(0,C.jsx)(v.N_,{style:{whiteSpace:"pre"},to:i,onClick:()=>{u((0,d.cQ)({status:!1,objectName:""}))},children:(0,j.Tw)(e)})]},`breadcrumbs-${n.toString()}`)})),$=[];p&&($=[(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("span",{children:[(0,C.jsx)("span",{className:"slashSpacingStyle",children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);const U=[(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(v.N_,{to:`/browser/${t}`,onClick:()=>{u((0,d.cQ)({status:!1,objectName:""}))},children:t})},"breadcrumbs-root-path"),...P,...$];return(0,C.jsxs)(s.Fragment,{children:[(0,C.jsxs)(E,{children:[S&&(0,C.jsx)(y,{modalOpen:S,bucketName:t,folderName:n,onClose:()=>{w(!1)},limitedSubPath:I&&!((0,_._)([V,...D],N)||f)}),(0,C.jsx)(h.BIu,{sx:{whiteSpace:"pre"},goBackFunction:()=>{if(p)u((0,d.cQ)({status:!1,objectName:""}));else{if(0===F.length)return void m("/browser");const e=F.slice(0,-1);m(`/browser/${t}${e.length>0?`/${encodeURIComponent(`${e.join("/")}/`)}`:""}`)}},additionalOptions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(g(),{text:`${t}/${F.join("/")}`,children:(0,C.jsx)(h.$nd,{id:"copy-path",icon:(0,C.jsx)(h.TdU,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:()=>{u((0,O.Hk)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,C.jsx)(h.azJ,{className:"additionalOptions",children:c})]}),children:U}),!a&&(0,C.jsx)(h.m_M,{tooltip:R?"Choose or create a new path":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"create a new path"),children:(0,C.jsx)(h.$nd,{id:"new-path",onClick:()=>{w(!0)},disabled:!f&&(x||!R),icon:(0,C.jsx)(h.pj3,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,C.jsx)(h.azJ,{sx:{display:"none",marginTop:15,marginBottom:5,justifyContent:"flex-start","& > div":{fontSize:12,fontWeight:"normal",flexDirection:"row",flexWrap:"nowrap"},[`@media (max-width: ${h.nmC.lg}px)`]:{display:"flex"}},children:c})]})};var A=n(93445);const N=e=>"Enabled"===e||"Suspended"===e;var k=n(37414),B=n(39947),F=n(81708),L=n(6681);const V=e=>{let{uploadPath:t,bucketName:n,forceDisable:i=!1,uploadFileFunction:a,uploadFolderFunction:l,overrideStyles:d={}}=e;const[c,u]=(0,s.useState)(null),[m,x]=(0,s.useState)(!1),p=(0,o.d4)((e=>e.system.anonymousMode)),j=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),b=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],g=T(j,t,b),f=Boolean(c),v=()=>{u(null)},S=(0,_._)([t,...g],b)||p,O=(0,_._)([n,...g],b,!1,!0),w=S||O;return(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(L.A,{tooltip:w?"Upload Files":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,C.jsx)(h.$nd,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:e=>{x(!m),u(e.currentTarget)},label:"Upload",icon:(0,C.jsx)(h.JMY,{}),variant:"callAction",disabled:i||!w,sx:d})}),(0,C.jsx)(h.Vey,{id:"upload-main-menu",options:[{label:"Upload File",icon:(0,C.jsx)(h.JMY,{}),value:"file",disabled:!S||i},{label:"Upload Folder",icon:(0,C.jsx)(h.nDF,{}),value:"folder",disabled:!O||i}],selectedOption:"",onSelect:e=>{"folder"!==e?a(v):l(v)},hideTriggerAction:()=>{x(!1)},open:m,anchorEl:c,anchorOrigin:"end",useAnchorWidth:!0})]})},D=e=>{let{open:t,closePanel:n,className:s="",children:o}=e;return(0,C.jsxs)(h.azJ,{id:"details-panel",sx:{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}}},className:`${t?"open":""} ${s}`,children:[(0,C.jsx)(h.$nd,{variant:"text",id:"close-details-list",onClick:n,icon:(0,C.jsx)(h._FR,{}),sx:{position:"absolute",right:5,top:18,padding:0,height:14,"&:hover:not(:disabled)":{backgroundColor:"transparent"}}}),o]})};var R=n(48245);const P=e=>{let{icon:t,strings:n}=e;return(0,C.jsxs)(h.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16},"& .fileNameText":{whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"}},children:[t,(0,C.jsx)("span",{className:"fileNameText",children:(0,j.qf)(n[n.length-1])})]})},$=[{icon:(0,C.jsx)(h.FRZ,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,C.jsx)(h.jCy,{}),extensions:["mp3","m4a","aac"]},{icon:(0,C.jsx)(h.yTC,{}),extensions:["pdf"]},{icon:(0,C.jsx)(h.QvW,{}),extensions:["ppt","pptx"]},{icon:(0,C.jsx)(h.z9t,{}),extensions:["xls","xlsx"]},{icon:(0,C.jsx)(h.VSs,{}),extensions:["cer","crt","pem"]},{icon:(0,C.jsx)(h.bM2,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,C.jsx)(h.qM2,{}),extensions:["cfg","yaml"]},{icon:(0,C.jsx)(h.ITz,{}),extensions:["sql"]},{icon:(0,C.jsx)(h.PcO,{}),extensions:["ttf","otf"]},{icon:(0,C.jsx)(h.yEV,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,C.jsx)(h.j_m,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,C.jsx)(h.DUd,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,C.jsx)(h.nLN,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],U=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e,s=(0,C.jsx)(h.KlI,{});e.endsWith("/")&&(s=(0,C.jsx)(h.kez,{}),n=e.slice(0,-1));const o=e.toLowerCase();for(const a of $)for(const e of a.extensions)o.endsWith(`.${e}`)&&(s=a.icon);!e.endsWith("/")&&e.indexOf(".")<0&&(s=(0,C.jsx)(h.YJK,{}));const i=n.split("/");return t?s:(0,C.jsx)(P,{icon:s,strings:i})};var z=n(37524);const G=e=>{let{metaData:t}=e;const n=Object.keys(t);return(0,C.jsx)(s.Fragment,{children:n.map(((e,n)=>{const s=(e=>Array.isArray(e)?e.map(j.Tw).join(", "):(0,j.Tw)(e))(t[e]);return(0,C.jsxs)(h.azJ,{sx:{marginBottom:15,fontSize:14,maxHeight:180,overflowY:"auto"},children:[(0,C.jsx)("strong",{children:e}),(0,C.jsx)("br",{}),s]},`box-meta-${e}-${n.toString()}`)}))})};var M=n(30718),J=n(85330),K=n(77403);const W=[{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"}],H=Array.from(Array(31),((e,t)=>({value:(t+1).toString(),label:(t+1).toString()}))),Y=(new Date).getFullYear(),Z=Array.from(Array(50),((e,t)=>({value:(t+Y).toString(),label:(t+Y).toString()})));var q=n(94141);const Q=(0,s.forwardRef)(((e,t)=>{let{id:n,label:o,disableOptions:i=!1,tooltip:a="",borderBottom:l=!1,onDateChange:r,value:d=""}=e;(0,s.useImperativeHandle)(t,(()=>({resetDate:b})));const[c,u]=(0,s.useState)(""),[m,x]=(0,s.useState)(""),[p,j]=(0,s.useState)("");(0,s.useEffect)((()=>{if(""!==d){const e=d.split("-");j(e[0]),u(e[1]),x(`${parseInt(e[2])}`)}}),[d]),(0,s.useEffect)((()=>{const[e,t]=((e,t,n)=>{const s=Date.parse(`${e}-${t}-${n}`);if(isNaN(s))return[!1,""];const o=parseInt(t),i=parseInt(n),a=`${e}-${o<10?`0${o}`:o}-${i<10?`0${i}`:i}`;return[new Date(s).toISOString().split("T")[0]===a,a]})(p,c,m);r(t,e)}),[c,m,p,r]);const b=()=>{u(""),x(""),j("")},g=()=>i||!1,f=[{value:"",label:""},...W],v=[{value:"",label:""},...H],_=[{value:"",label:""},...Z];return(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)(h.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginBottom:5},children:(0,C.jsxs)(h.l1Y,{htmlFor:n,children:[(0,C.jsx)("span",{children:o}),""!==a&&(0,C.jsx)(h.azJ,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,C.jsx)(h.m_M,{tooltip:a,placement:"top",children:(0,C.jsx)(h.azJ,{sx:{"& .min-icon":{width:13}},children:(0,C.jsx)(h.NTw,{})})})})]})}),(0,C.jsxs)(h.azJ,{sx:{display:"flex",gap:12},children:[(0,C.jsx)(h.l6P,{id:`${n}-month`,name:`${n}-month`,value:c,onChange:e=>{u(e)},options:f,label:"",disabled:g()}),(0,C.jsx)(h.l6P,{id:`${n}-day`,name:`${n}-day`,value:m,onChange:e=>{x(e)},options:v,label:"",disabled:g()}),(0,C.jsx)(h.l6P,{id:`${n}-year`,name:`${n}-year`,value:p,onChange:e=>{j(e)},options:_,label:"",disabled:g(),sx:{marginBottom:12}})]})]})})),X=e=>{let{open:t,closeModalAndRefresh:n,objectName:i,objectInfo:r,bucketName:d}=e;const c=(0,l.jL)(),u=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),[x,p]=(0,s.useState)(!0),[j,b]=(0,s.useState)(""),[g,f]=(0,s.useState)(""),[v,_]=(0,s.useState)(!1),[S,w]=(0,s.useState)(!1),[T,y]=(0,s.useState)(!1);(0,s.useEffect)((()=>{if(r.retention_mode&&(b((null===u||void 0===u?void 0:u.mode)||J.BT.Governance),y(!0)),r.retention_until_date){const t=new Date(r.retention_until_date);if("Invalid Date"!==t.toString()){const n=t.getFullYear(),s=(e=t.getMonth()+1)<10?`0${e}`:`${e}`,o=t.getDate();isNaN(o)||"NaN"===s||isNaN(n)||f(`${n}-${s}-${o}`)}y(!0)}var e}),[r,null===u||void 0===u?void 0:u.mode]);const E=(0,s.useRef)(null),I=()=>{p(!1),b(J.BT.Governance),E.current&&E.current.resetDate()},A=T&&("governance"===j||""===j);return(0,C.jsx)(q.A,{title:"Set Retention Policy",modalOpen:t,onClose:()=>{I(),n(!1)},children:(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)("strong",{children:"Selected Object"}),": ",i]}),A&&(0,C.jsx)(h.dOG,{value:"status",id:"status",name:"status",checked:x,onChange:e=>{p(!x)},label:"Status",indicatorLabels:["Enabled","Disabled"]}),(0,C.jsx)(h.z6M,{currentValue:j,id:"type",name:"type",label:"Type",disableOptions:!x||T&&""!==j,onChange:e=>{b(e.target.value)},selectorOptions:[{label:"Governance",value:J.BT.Governance},{label:"Compliance",value:J.BT.Compliance}]}),(0,C.jsx)(Q,{id:"date",label:"Date",disableOptions:!(x&&("governance"===j||"compliance"===j)),ref:E,value:g,borderBottom:!0,onDateChange:(e,t)=>{_(t),t&&f(e)}}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"reset",type:"button",variant:"regular",onClick:I,label:"Reset"}),(0,C.jsx)(h.$nd,{id:"save",type:"submit",variant:"callAction",disabled:x&&""===j||x&&!v||S,onClick:()=>{w(!0);const e=r.name||"",t=r.version_id||null;x||"governance"!==j?((e,t,s)=>{a.F.buckets.putObjectRetention(d,{prefix:e,version_id:t||""},{expires:s,mode:j}).then((()=>{w(!1),n(!0)})).catch((e=>{c((0,O.Dy)((0,m.S)(e.error))),w(!1)}))})(e,t,x||"governance"!==j?`${g}T23:59:59Z`:""):((e,t)=>{a.F.buckets.deleteObjectRetention(d,{prefix:e,version_id:t||""}).then((()=>{w(!1),n(!0)})).catch((e=>{c((0,O.Dy)((0,m.S)(e.error))),w(!1)}))})(e,t)},label:"Save"})]})]})})})};var ee=n(58661),te=n(25448);const ne=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:i,selectedObject:a,versioningInfo:d,selectedVersion:c=""}=e;const u=(0,l.jL)(),[m,x]=(0,te.A)((()=>t(!0)),(e=>{u((0,O.C9)(e)),"Access Denied."===e.detailedError&&t(!0)})),[p,j]=(0,s.useState)(!1),[b,g]=(0,s.useState)(!1),f=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),v=(0,_._)([i],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===f||void 0===f?void 0:f.mode);if(!a)return null;return(0,C.jsx)(ee.A,{title:"Delete Object",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:m,onConfirm:()=>{const e=a.endsWith("/");x("DELETE",`/api/v1/buckets/${encodeURIComponent(i)}/objects?prefix=${encodeURIComponent(a)}${""!==c?`&version_id=${encodeURIComponent(c)}`:`&recursive=${e}&all_versions=${p}`}${b?"&bypass=true":""}`)},onClose:()=>t(!1),confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete: ",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:a})," ",""!==c?(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),"Version ID:",(0,C.jsx)("br",{}),(0,C.jsx)("strong",{children:c})]}):"","? ",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),N(null===d||void 0===d?void 0:d.status)&&""===c&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(h.dOG,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:p,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:e=>{j(!p)},description:""})}),v&&(p||""!==c)&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:b,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{g(!b)},description:""})})}),p&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,C.jsx)("br",{}),"This action is irreversible."]}),(0,C.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},se=e=>{let{open:t,closeModalAndRefresh:n,objectName:o,bucketName:i,actualInfo:r}=e;const d=(0,l.jL)(),[c,x]=(0,s.useState)(!1),[p,j]=(0,s.useState)(!1),b=r.version_id;(0,s.useEffect)((()=>{const e=u()(r,"legal_hold_status","OFF");x("ON"===e)}),[r]);const g=()=>{x(!1)};return(0,C.jsx)(q.A,{title:"Set Legal Hold",modalOpen:t,onClose:()=>{g(),n(!1)},children:(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),j(!0),a.F.buckets.putObjectLegalHold(i,{prefix:o,version_id:b||""},{status:c?J.SW.Enabled:J.SW.Disabled}).then((()=>{j(!1),n(!0)})).catch((e=>{d((0,O.Dy)((0,m.S)(e.error))),j(!1)}))})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)("strong",{children:"Object"}),": ",i+"/"+o]}),(0,C.jsx)(h.dOG,{value:"legalhold",id:"legalhold",name:"legalhold",checked:c,onChange:e=>{x(!c)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"clear",type:"button",variant:"regular",onClick:g,label:"Clear"}),(0,C.jsx)(h.$nd,{id:"save",type:"submit",variant:"callAction",disabled:p,label:" Save"})]})]})})})},oe=f.Ay.b((e=>{let{theme:t}=e;return{color:u()(t,"signalColors.danger","#C83B51"),marginLeft:5}})),ie=e=>{var t;let{modalOpen:n,onCloseAndUpdate:i,bucketName:d,actualInfo:c}=e;const x=(0,l.jL)(),p=(0,o.d4)(O.Rq),[j,b]=(0,s.useState)(""),[g,f]=(0,s.useState)(""),[v,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[y,E]=(0,s.useState)(""),[I,A]=(0,s.useState)(""),N=c.tags,k=Object.keys(N||{}),B=null===(t=c.name)||void 0===t?void 0:t.split("/"),F=(null===B||void 0===B?void 0:B.pop())||"",L=e=>(0,C.jsxs)(h.azJ,{sx:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},children:["Tag",e?"s":""," for: ",(0,C.jsx)("strong",{children:F})]});return(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(q.A,{modalOpen:n,title:w?"Delete Tag":"Edit Tags",onClose:()=>{i(!0)},iconColor:w?"delete":"default",titleIcon:w?(0,C.jsx)(h.aaC,{}):(0,C.jsx)(h.cGQ,{}),children:w?(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)(h.xA9,{container:!0,children:[L(!1),"Are you sure you want to delete the tag"," ",(0,C.jsxs)(oe,{children:[y," : ",I]})," ","?",(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"cancel",type:"button",variant:"regular",onClick:()=>{E(""),A(""),T(!1)},label:"Cancel"}),(0,C.jsx)(h.$nd,{type:"submit",variant:"secondary",onClick:()=>{const e={...N};delete e[y];const t=p?c.version_id||"":"null";a.F.buckets.putObjectTags(d,{prefix:c.name||"",version_id:t},{tags:e}).then((()=>{i(!0),S(!1)})).catch((e=>{x((0,O.Dy)((0,m.S)(e.error))),S(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,C.jsxs)(h.azJ,{children:[(0,C.jsx)(_.R,{scopes:[r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS],resource:d,children:(0,C.jsxs)(h.azJ,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[L(!0),(0,C.jsxs)(h.azJ,{sx:{fontSize:14,fontWeight:"normal"},children:["Current Tags:",(0,C.jsx)("br",{}),0===k.length?(0,C.jsx)("span",{className:"muted",children:"There are no tags for this object"}):(0,C.jsx)(s.Fragment,{}),(0,C.jsx)(h.azJ,{sx:{marginTop:"5px",marginBottom:"15px"},children:k.map(((e,t)=>{const n=u()(N,`${e}`,"");return""!==n?(0,C.jsx)(_.R,{scopes:[r.OV.S3_DELETE_OBJECT_TAGGING],resource:d,errorProps:{deleteIcon:null,onDelete:null},children:(0,C.jsx)(h.vwO,{id:`${e} : ${n}`,label:`${e} : ${n}`,variant:"regular",color:"default",onDelete:()=>{((e,t)=>{E(e),A(t),T(!0)})(e,n)}})},`chip-${t}`):null}))})]})]})}),(0,C.jsx)(_.R,{scopes:[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS],resource:d,errorProps:{disabled:!0,onClick:null},children:(0,C.jsxs)(h.azJ,{children:[(0,C.jsx)(h._xt,{icon:(0,C.jsx)(h.b_$,{}),separator:!1,children:"Add New Tag"}),(0,C.jsxs)(h.Hbc,{containerPadding:!1,withBorders:!1,children:[(0,C.jsx)(h.cl_,{value:j,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:e=>{b(e.target.value)}}),(0,C.jsx)(h.cl_,{value:g,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:e=>{f(e.target.value)}}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:()=>{f(""),b("")},label:"Clear"}),(0,C.jsx)(h.$nd,{type:"submit",variant:"callAction",disabled:""===g.trim()||""===j.trim()||v,onClick:()=>{S(!0);const e={};e[j]=g;const t={...N,...e},n=p?c.version_id||"":"null";a.F.buckets.putObjectTags(d,{prefix:c.name||"",version_id:n},{tags:t}).then((()=>{i(!0),S(!1)})).catch((e=>{x((0,O.Dy)((0,m.S)(e.error))),S(!1)}))},id:"saveTag",label:"Save"})]})]})]})})]})})})},ae=e=>{let{value:t}=e;const[n,o]=(0,s.useState)(!1);return(0,C.jsxs)(h.azJ,{sx:{display:"flex",alignItems:"center",flexFlow:"row",[`@media (max-width: ${h.nmC.sm}px)`]:{flexFlow:"column"}},children:[(0,C.jsx)(h.cl_,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:n?"text":"password",onChange:()=>{},value:t,overlayIcon:(0,C.jsx)(h.TdU,{}),readOnly:!0,overlayAction:()=>navigator.clipboard.writeText(t)}),(0,C.jsx)(h.$nd,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:()=>o(!n),label:"Show/Hide"})]})},le=e=>{let{closeInspectModalAndRefresh:t,inspectOpen:n,inspectPath:o,volumeName:i}=e;const a=(0,l.jL)(),r=()=>t(!1),[d,c]=(0,s.useState)(!0),[u,m]=(0,s.useState)(""),[x,p]=(0,s.useState)("");if(!o)return null;return(0,C.jsxs)(s.Fragment,{children:[!u&&(0,C.jsx)(q.A,{modalOpen:n,titleIcon:(0,C.jsx)(h.nTF,{}),title:"Inspect Object",onClose:r,children:(0,C.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:["Would you like to encrypt ",(0,C.jsx)("b",{children:o}),"? ",(0,C.jsx)("br",{}),(0,C.jsx)(h.dOG,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:d,value:"encrypt",id:"encrypt",name:"encrypt",onChange:e=>{c(!d)},description:""}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:(0,C.jsx)(h.$nd,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:async()=>{let e=document.baseURI.replace(window.location.origin,"");(async e=>await fetch(e,{method:"GET"}))(`${window.location.origin}${e}/api/v1/admin/inspect?volume=${encodeURIComponent(i)}&file=${encodeURIComponent(o+"/xl.meta")}&encrypt=${d}`).then((async e=>{if(!e.ok){const t=await e.json();a((0,O.C9)({errorMessage:t.message,detailedError:t.code}))}const t=await e.blob(),n=e.headers.get("content-disposition").split('"')[1],s=(0,j.UM)(n)||"";(0,j.OT)(t,n),p(n),""!==s?m(s):r()})).catch((e=>{a((0,O.C9)(e))}))},label:"Inspect"})})]})}),u?(0,C.jsxs)(q.A,{modalOpen:n,title:"Inspect Decryption Key",onClose:()=>{(0,j.Yj)(x),r(),m("")},titleIcon:(0,C.jsx)(h.aJN,{}),children:[(0,C.jsxs)(h.azJ,{children:["This will be displayed only once. It cannot be recovered.",(0,C.jsx)("br",{}),"Use secure medium to share this key."]}),(0,C.jsx)(h.azJ,{children:(0,C.jsx)(ae,{value:u})})]}):null]})},re=e=>{let{open:t,closeModal:n,currentItem:o,internalPaths:i,actualInfo:a,bucketName:r}=e;const d=(0,l.jL)(),[c,u]=(0,s.useState)(o),[m,x]=(0,s.useState)(!1);return(0,C.jsxs)(q.A,{title:"Rename Download",modalOpen:t,onClose:n,titleIcon:(0,C.jsx)(h.qUP,{}),children:[(0,C.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,C.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{})," We recommend to rename the file download"]}),(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),(0,R._)(d,r,i,a),n()})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsx)(h.cl_,{id:"download-filename",name:"download-filename",onChange:e=>{u(e.target.value)},label:"",type:"text",value:c,error:c.length>200&&!m?"Filename should be less than 200 characters long.":""}),(0,C.jsx)(h.dOG,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:m,onChange:e=>{x(e.target.checked),e.target.checked&&u(o)},label:"Use Original Name"}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:K.Uz.modalButtonBar,children:(0,C.jsx)(h.$nd,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:c.length>200&&!m,label:"Download File"})})]})})]})},de={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},ce=e=>{let{internalPaths:t,bucketName:n,versioningInfo:i,locking:c,onClosePanel:m}=e;const x=(0,l.jL)(),p=(0,o.d4)(O.Rq),b=(0,o.d4)((e=>e.objectBrowser.versionsMode)),g=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),f=(0,o.d4)((e=>e.objectBrowser.loadingObjectInfo)),[v,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[y,E]=(0,s.useState)(!1),[I,N]=(0,s.useState)(!1),[k,B]=(0,s.useState)(!1),[F,V]=(0,s.useState)(null),[D,P]=(0,s.useState)([]),[$,J]=(0,s.useState)(null),[K,W]=(0,s.useState)([]),[H,Y]=(0,s.useState)(!1),[Z,q]=(0,s.useState)(!1),[Q,ee]=(0,s.useState)(0),[te,oe]=(0,s.useState)(!1),[ae,ce]=(0,s.useState)(null),[ue,he]=(0,s.useState)(!1),me=(t||"").split("/").pop()||"";let xe=[];F&&F.name&&(xe=F.name.split("/")),(0,s.useEffect)((()=>{if(p&&D&&D.length>=1){let e=D.find((e=>e.is_latest))||de;""!==g&&(e=D.find((e=>e.version_id===g))||de),e.is_delete_marker||he(!0),V(e)}}),[g,p,D]),(0,s.useEffect)((()=>{f&&""!==t&&a.F.buckets.listObjects(n,{prefix:t,with_versions:p}).then((e=>{const t=e.data.objects||[];if(p){P(t),W(t);const e=t.reduce(((e,t)=>null!==t&&void 0!==t&&t.size?e+t.size:e),0);ee(e)}else{const e=t[0];V(e),W([]),e.is_delete_marker||he(!0)}x((0,d.oe)(!1))})).catch((e=>{console.error("Error loading object details",e.error),x((0,d.oe)(!1))}))}),[f,n,t,x,p,g]),(0,s.useEffect)((()=>{ue&&""!==t&&a.F.buckets.getObjectMetadata(n,{prefix:t,versionID:(null===F||void 0===F?void 0:F.version_id)||""}).then((e=>{let t=u()(e.data,"objectMetadata",{});ce(t),he(!1)})).catch((e=>{console.error("Error Getting Metadata Status: ",e.detailedError),he(!1)}))}),[n,t,ue,null===F||void 0===F?void 0:F.version_id]);let pe=[];F&&F.tags&&(pe=Object.keys(F.tags));const je=(0,C.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,C.jsx)(h.aHM,{})});if(!F)return f?je:null;const be=xe.length>0?xe[xe.length-1]:F.name,ge=[n,me,[n,F.name].join("/")],fe=(0,_._)(n,[r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS]),ve=(0,_._)(ge,[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS]),_e=(0,_._)(ge,[r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],!0),Se=(0,_._)(ge,[r.OV.ADMIN_INSPECT_DATA]),Oe=(0,_._)(ge,[r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),we=(0,_._)(ge,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),Te=(0,_._)([n,me,[n,F.name].join("/")],[r.OV.S3_DELETE_OBJECT]);let Ce=(0,A.IZ)(ae,me);const ye=[{action:()=>{(0,R._)(x,n,t,F)},label:"Download",disabled:!!F.is_delete_marker||!we,icon:(0,C.jsx)(h.s3U,{}),tooltip:we?"Download this Object":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download this object")},{action:()=>{S(!0)},label:"Share",disabled:!!F.is_delete_marker||!we,icon:(0,C.jsx)(h.liv,{}),tooltip:we?"Share this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"share this object")},{action:()=>{q(!0)},label:"Preview",disabled:!!F.is_delete_marker||"none"===Ce&&!we,icon:(0,C.jsx)(h.cyn,{}),tooltip:we?"Preview this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"preview this object")},{action:()=>{N(!0)},label:"Legal Hold",disabled:!c||!p||!!F.is_delete_marker||!fe||""!==g,icon:(0,C.jsx)(h.ODz,{}),tooltip:fe?c?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,r.vj)([r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:()=>{T(!0)},label:"Retention",disabled:!p||!!F.is_delete_marker||!_e||""!==g||!c,icon:(0,C.jsx)(h.gn6,{}),tooltip:_e?c?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,r.vj)([r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:()=>{E(!0)},label:"Tags",disabled:!!F.is_delete_marker||""!==g||!ve,icon:(0,C.jsx)(h.P3Z,{}),tooltip:ve?"Change Tags for this File":(0,r.vj)([r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"set Tags on this object")},{action:()=>{B(!0)},label:"Inspect",disabled:!p||!!F.is_delete_marker||""!==g||!Se,icon:(0,C.jsx)(h.nTF,{}),tooltip:Se?"Inspect this file":(0,r.vj)([r.OV.ADMIN_INSPECT_DATA],"inspect this file")},{action:()=>{x((0,d.cQ)({status:!b,objectName:be}))},label:b?"Hide Object Versions":"Display Object Versions",icon:(0,C.jsx)(h.j1U,{}),disabled:!p||!(F.version_id&&"null"!==F.version_id)||!Oe,tooltip:Oe?F.version_id&&"null"!==F.version_id?"Display Versions for this file":"":(0,r.vj)([r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"display all versions of this object")}];return(0,C.jsxs)(s.Fragment,{children:[v&&F&&(0,C.jsx)(M.default,{open:v,closeModalAndRefresh:()=>{J(null),S(!1)},bucketName:n,dataObject:$||F}),w&&F&&(0,C.jsx)(X,{open:w,closeModalAndRefresh:e=>{T(!1),e&&x((0,d.oe)(!0))},objectName:me,objectInfo:F,bucketName:n}),H&&(0,C.jsx)(ne,{deleteOpen:H,selectedBucket:n,selectedObject:t,closeDeleteModalAndRefresh:e=>{Y(!1),e&&""===g?m(!0):(x((0,d.SK)(!0)),x((0,d.Ai)("")),x((0,d.oe)(!0)))},versioningInfo:p?i:void 0,selectedVersion:g}),I&&F&&(0,C.jsx)(se,{open:I,closeModalAndRefresh:e=>{N(!1),e&&x((0,d.oe)(!0))},objectName:F.name||"",bucketName:n,actualInfo:F}),Z&&F&&(0,C.jsx)(z.default,{open:Z,bucketName:n,actualInfo:F,onClosePreview:()=>{q(!1)}}),y&&F&&(0,C.jsx)(ie,{modalOpen:y,bucketName:n,actualInfo:F,onCloseAndUpdate:e=>{E(!1),e&&x((0,d.oe)(!0))}}),k&&F&&(0,C.jsx)(le,{inspectOpen:k,volumeName:n,inspectPath:F.name||"",closeInspectModalAndRefresh:e=>{B(!1),e&&x((0,d.oe)(!0))}}),te&&F&&(0,C.jsx)(re,{open:te,closeModal:()=>{oe(!1)},currentItem:me,bucketName:n,internalPaths:t,actualInfo:F}),f?(0,C.jsx)(s.Fragment,{children:je}):(0,C.jsxs)(h.azJ,{sx:{"& .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},"& .capitalizeFirst":{textTransform:"capitalize"},"& .detailContainer":{padding:"0 22px",marginBottom:10,fontSize:14}},children:[(0,C.jsx)(h.Smc,{title:(0,C.jsxs)("div",{className:"ObjectDetailsTitle",children:[U(be||"",!0),(0,C.jsx)("span",{className:"objectNameContainer",children:be})]}),items:ye}),(0,C.jsx)(L.A,{tooltip:Te?"":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete this object"),children:(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,C.jsx)(_.R,{resource:[n,me,[n,F.name].join("/")],scopes:[r.OV.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,C.jsx)(h.$nd,{id:"delete-element-click",icon:(0,C.jsx)(h.d7y,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:()=>{Y(!0)},disabled:""===g&&F.is_delete_marker,sx:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete"+(""!==g?" version":"")})})})}),(0,C.jsx)(h.kCK,{icon:(0,C.jsx)(h.Hch,{}),label:"Object Info"}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Name:"}),(0,C.jsx)("br",{}),(0,C.jsx)("div",{style:{overflowWrap:"break-word"},children:be})]}),""!==g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Version ID:"}),(0,C.jsx)("br",{}),g]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Size:"}),(0,C.jsx)("br",{}),(0,j.nO)(`${F.size||"0"}`)]}),F.version_id&&"null"!==F.version_id&&""===g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Versions:"}),(0,C.jsx)("br",{}),K.length," version",1!==K.length?"s":"",","," ",(0,j.qO)(Q)]}),""===g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Last Modified:"}),(0,C.jsx)("br",{}),(e=>{const t=new Date,n=new Date(e),s=t.getTime()-n.getTime(),o=(0,j.eQ)(s,"ms");return""!==o.trim()?`${o} ago`:"Just now"})(F.last_modified||"")]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"ETAG:"}),(0,C.jsx)("br",{}),F.etag||"N/A"]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Tags:"}),(0,C.jsx)("br",{}),0===pe.length?"N/A":pe.map(((e,t)=>(0,C.jsxs)("span",{children:[e,":",u()(F,`tags.${e}`,""),t{let{versionToRestore:t,bucketName:n,objectPath:o,restoreOpen:i,onCloseAndUpdate:r}=e;const c=(0,l.jL)(),[u,x]=(0,s.useState)(!1);return(0,C.jsx)(ee.A,{title:"Restore File Version",confirmText:"Restore",isOpen:i,isLoading:u,titleIcon:(0,C.jsx)(h.YkU,{}),onConfirm:()=>{x(!0),a.F.buckets.putObjectRestore(n,{prefix:o,version_id:t.version_id||""}).then((()=>{x(!1),r(!0),c((0,d.NV)({prefix:o,objectInfo:t}))})).catch((e=>{c((0,O.C9)((0,m.S)(e.error))),x(!1)}))},confirmButtonProps:{variant:"secondary",disabled:u},onClose:()=>{r(!1)},confirmationContent:(0,C.jsxs)(h.azJ,{id:"alert-dialog-description",children:["Are you sure you want to restore ",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:o})," ",(0,C.jsx)("br",{})," with Version ID:",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:t.version_id}),"?"]})})},he=e=>{let{type:t}=e,n="#000",s="";switch(t){case"null":n="#07193E",s="NULL VERSION";break;case"deleted":n="#868686",s="DELETED";break;default:n="#174551",s="CURRENT VERSION"}return(0,C.jsx)("span",{style:{backgroundColor:n,padding:"0 5px",display:"inline-block",color:"#FFF",fontWeight:"bold",fontSize:12,borderRadius:2,whiteSpace:"nowrap",margin:"0 10px"},children:s})},me=f.Ay.div((e=>{let{theme:t}=e;return{"&:before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:u()(t,"borderColor","#F8F8F8"),left:"24px"},"& .mainFileVersionItem":{borderBottom:`${u()(t,"borderColor","#F8F8F8")} 1px solid`,padding:"1rem 0",margin:"0 0.5rem 0 2.5rem",cursor:"pointer","&.deleted":{color:"#868686"}},"& .intermediateLayer":{margin:"0 1.5rem 0 1.5rem","&:hover, &.selected":{backgroundColor:u()(t,"boxBackground","#F8F8F8"),"& > div":{borderBottomColor:u()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10}},"& .buttonContainer":{textAlign:"right","& button":{marginLeft:"1.5rem"}},"& .versionID":{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},"& .versionData":{marginRight:"10px",fontSize:12,color:"#868686"},"@media (max-width: 600px)":{"& .buttonContainer":{"& button":{marginLeft:"5px"}}},"@media (max-width: 799px)":{"&:before":{display:"none"},"& .mainFileVersionItem":{padding:"5px 0px",margin:0},"& .intermediateLayer":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:u()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:14,"& svg.min-icon":{display:"none"}},"& .versionData":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"},"& .collapsableInfo":{display:"flex",flexDirection:"column"},"& .versionItem":{display:"none"}}}})),xe=e=>{let{fileName:t,versionInfo:n,isSelected:s,checkable:o,isChecked:i,onCheck:a,onShare:l,onDownload:r,onRestore:d,onPreview:c,globalClick:u,index:m,key:x,style:b}=e;const g=n.is_delete_marker,f=[{icon:(0,C.jsx)(h.cyn,{}),action:c,tooltip:"Preview"},{icon:(0,C.jsx)(h.s3U,{}),action:r,tooltip:"Download this version"},{icon:(0,C.jsx)(h.liv,{}),action:l,tooltip:"Share this version"},{icon:(0,C.jsx)(h.YkU,{}),action:d,tooltip:"Restore this version"}];let v=null;n.is_delete_marker?v="deleted":n.is_latest?v="current":"null"===n.version_id&&(v="null");let _=p.c9.now();return n.last_modified&&(_=p.c9.fromISO(n.last_modified)),(0,C.jsx)(me,{children:(0,C.jsx)(h.xA9,{container:!0,className:"ctrItem",onClick:()=>{u(n)},style:b,children:(0,C.jsx)(h.xA9,{item:!0,xs:12,className:"intermediateLayer "+(s?"selected":""),children:(0,C.jsxs)(h.xA9,{item:!0,xs:!0,className:"mainFileVersionItem "+(n.is_delete_marker?"deleted":""),children:[(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsxs)(h.xA9,{container:!0,children:[(0,C.jsxs)(h.xA9,{item:!0,xs:!0,md:4,className:"versionContainer",children:[o&&(0,C.jsx)(h.Sc0,{checked:i,id:`select-${n.version_id}`,name:`select-${n.version_id}`,onChange:e=>{e.stopPropagation(),a(n.version_id||"")},value:n.version_id||"",disabled:n.is_delete_marker,sx:{width:"initial"}}),U(t,!0)," v",m.toString(),(0,C.jsx)("span",{className:"versionItem",children:v&&(0,C.jsx)(he,{type:v})})]}),(0,C.jsx)(h.xA9,{item:!0,xs:10,md:8,className:"buttonContainer",children:f.map(((e,t)=>(0,C.jsx)(h.m_M,{tooltip:e.tooltip,children:(0,C.jsx)(h.K0,{size:"small",id:`version-action-${e.tooltip}-${t.toString()}`,className:"spacing "+(g?"buttonDisabled":""),disabled:g,onClick:t=>{t.stopPropagation(),g?t.preventDefault():e.action(n)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},`version-action-${e.tooltip}-${t.toString()}`)))})]})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,className:"versionID",children:"null"!==n.version_id?n.version_id:"-"}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,className:"collapsableInfo",children:[(0,C.jsxs)("span",{className:"versionData",children:[(0,C.jsx)("strong",{children:"Last modified:"})," ",_.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,C.jsxs)("span",{className:"versionData",children:[(0,C.jsx)("strong",{children:"Size:"})," ",(0,j.nO)(`${n.size||"0"}`)]})]})]})})},x)})},pe=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:i,selectedObject:d}=e;const c=(0,l.jL)(),[u,x]=(0,s.useState)(!1),[p,j]=(0,s.useState)(""),[b,g]=(0,s.useState)(!1),f=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),v=(0,_._)([i],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===f||void 0===f?void 0:f.mode);if((0,s.useEffect)((()=>{u&&a.F.buckets.deleteObject(i,{prefix:d,non_current_versions:!0,bypass:b}).then((()=>{t(!0)})).catch((e=>{c((0,O.C9)((0,m.S)(e.error))),x(!1)}))}),[u,t,c,d,i,b]),!d)return null;return(0,C.jsx)(ee.A,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:u,onConfirm:()=>{x(!0)},onClose:()=>t(!1),confirmButtonProps:{disabled:"YES, PROCEED"!==p||u},confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,C.jsx)("b",{children:d}),"? ",(0,C.jsx)("br",{}),v&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:b,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{g(!b)},description:""})})}),(0,C.jsx)("br",{}),"To continue please type ",(0,C.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(h.cl_,{id:"type-confirm",name:"retype-tenant",onChange:e=>{j(e.target.value)},label:"",value:p})})]})})},je=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:i,selectedVersions:d,selectedObject:c}=e;const u=(0,l.jL)(),[x,p]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),g=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),f=(0,_._)([i],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===g||void 0===g?void 0:g.mode);return(0,s.useEffect)((()=>{if(x){const e=d.map((e=>({path:c,versionID:e,recursive:!1})));e.length>0&&a.F.buckets.deleteMultipleObjects(i,e,{all_versions:!1,bypass:j}).then((()=>{p(!1),t(!0)})).catch((e=>{u((0,O.C9)((0,m.S)(e.error))),p(!1)}))}}),[x,t,i,c,d,j,u]),d?(0,C.jsx)(ee.A,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:x,onConfirm:()=>{p(!0)},onClose:()=>t(!1),confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete the selected ",d.length," ","versions for ",(0,C.jsx)("strong",{children:c}),"?",f&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:j,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{b(!j)},description:""})})})]})}):null};var be=n(95098);const ge={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},fe=e=>{let{internalPaths:t,bucketName:n}=e;const i=(0,l.jL)(),r=(0,o.d4)((e=>e.objectBrowser.searchVersions)),c=(0,o.d4)((e=>e.objectBrowser.loadingVersions)),x=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),p=(0,o.d4)(O.Rq),[b,g]=(0,s.useState)(!1),[f,v]=(0,s.useState)(null),[_,S]=(0,s.useState)(null),[w,T]=(0,s.useState)([]),[y,E]=(0,s.useState)(!1),[A,N]=(0,s.useState)(null),[k,B]=(0,s.useState)("date"),[F,V]=(0,s.useState)(!1),[D,P]=(0,s.useState)(!1),[$,U]=(0,s.useState)(!1),[G,J]=(0,s.useState)([]),[K,W]=(0,s.useState)(!1);let H=[];f&&f.name&&(H=f.name.split("/")),(0,s.useEffect)((()=>{c||f||i((0,d.SK)(!0))}),[c,f,i]),(0,s.useEffect)((()=>{c&&""!==t&&a.F.buckets.listObjects(n,{prefix:t,with_versions:p}).then((e=>{const n=u()(e.data,"objects",[]).filter((e=>e.name===t));p?(v(n.find((e=>e.is_latest))||ge),T(n)):(v(n[0]),T([])),i((0,d.SK)(!1))})).catch((e=>{i((0,O.C9)((0,m.S)(e.error))),i((0,d.SK)(!1))}))}),[c,n,t,i,p]);const Y=e=>{S(e),g(!0)},Z=e=>{S(e),V(!0)},q=e=>{N(e),E(!0)},Q=e=>{(0,R._)(i,n,t,e)},X=e=>{i((0,d.Ai)(e.version_id||""))},ee=w.filter((e=>!!e.version_id&&e.version_id.includes(r))),te=w.reduce(((e,t)=>t.size?e+t.size:e),0);ee.sort(((e,t)=>{if("size"===k)return e.size&&t.size?e.sizet.size?1:0:0;{const n=new Date(e.last_modified||"").getTime(),s=new Date(t.last_modified||"").getTime();return ns?-1:0}}));const ne=e=>{if(G.includes(e)){const t=G.filter((t=>t!==e));return void J(t)}const t=[...G];t.push(e),J(t)};return(0,C.jsxs)(s.Fragment,{children:[b&&f&&(0,C.jsx)(M.default,{open:b,closeModalAndRefresh:()=>{S(null),g(!1),V(!1)},bucketName:n,dataObject:_||f}),y&&f&&A&&(0,C.jsx)(ue,{restoreOpen:y,bucketName:n,versionToRestore:A,objectPath:f.name||"",onCloseAndUpdate:e=>{E(!1),N(null),e&&(i((0,d.SK)(!0)),i((0,d.oe)(!0)))}}),F&&f&&(0,C.jsx)(z.default,{open:F,bucketName:n,actualInfo:{name:f.name||"",version_id:_&&_.version_id?_.version_id:"null",size:_&&_.size?_.size:0,content_type:"",last_modified:f.last_modified||""},onClosePreview:()=>{V(!1)}}),D&&(0,C.jsx)(pe,{deleteOpen:D,closeDeleteModalAndRefresh:e=>{P(!1),e&&(i((0,d.SK)(!0)),i((0,d.Ai)("")),i((0,d.oe)(!0)))},selectedBucket:n,selectedObject:t}),K&&(0,C.jsx)(je,{selectedBucket:n,selectedObject:t,deleteOpen:K,selectedVersions:G,closeDeleteModalAndRefresh:e=>{W(!1),e&&(i((0,d.SK)(!0)),i((0,d.Ai)("")),i((0,d.oe)(!0)),J([]))}}),(0,C.jsxs)(h.xA9,{container:!0,sx:{width:"100%",padding:10,"@media (max-width: 799px)":{minHeight:800}},children:[!f&&(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(h.z21,{})}),f&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(I,{bucketName:n,internalPaths:t,hidePathButton:!0})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{position:"relative","& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}},[`@media (max-width: ${h.nmC.md}px)`]:{"&::before":{display:"none"}}},children:(0,C.jsx)(h.lcx,{icon:(0,C.jsx)("span",{style:{display:"block",marginTop:"-10px"},children:(0,C.jsx)(h.j1U,{style:{width:20,height:20}})}),title:`${H.length>0?H[H.length-1]:f.name} Versions`,subTitle:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("span",{className:"detailsSpacer",children:(0,C.jsxs)("strong",{children:[w.length," Version",1===w.length?"":"s","\xa0\xa0\xa0"]})}),(0,C.jsx)("span",{className:"detailsSpacer",children:(0,C.jsx)("strong",{children:(0,j.qO)(te)})})]}),actions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(L.A,{tooltip:"Select Multiple Versions",children:(0,C.jsx)(h.$nd,{id:"select-multiple-versions",onClick:()=>{U(!$)},icon:(0,C.jsx)(h.IN,{}),variant:$?"callAction":"regular",style:{marginRight:8}})}),$&&(0,C.jsx)(L.A,{tooltip:"Delete Selected Versions",children:(0,C.jsx)(h.$nd,{id:"delete-multiple-versions",onClick:()=>{W(!0)},icon:(0,C.jsx)(h.d7y,{}),variant:"secondary",style:{marginRight:8},disabled:0===G.length})}),(0,C.jsx)(L.A,{tooltip:"Delete Non Current Versions",children:(0,C.jsx)(h.$nd,{id:"delete-non-current",onClick:()=>{P(!0)},icon:(0,C.jsx)(h.rgY,{}),variant:"secondary",style:{marginRight:15},disabled:w.length<=1})}),(0,C.jsx)(h.l6P,{id:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}],value:k,label:"Sort by",onChange:e=>{B(e)},noLabelMinWidth:!0})]}),bottomBorder:!1})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto",[`@media (max-width: ${h.nmC.md}px)`]:{height:600}},children:f.version_id&&"null"!==f.version_id&&(0,C.jsx)(be.B8,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:ee.length,rowHeight:108,rowRenderer:e=>{let{key:t,index:n,isScrolling:s,isVisible:o,style:i}=e;const a=w.length-n;return(0,C.jsx)(xe,{style:i,fileName:(null===f||void 0===f?void 0:f.name)||"",versionInfo:ee[n],index:a,onDownload:Q,onRestore:q,onShare:Y,onPreview:Z,globalClick:X,isSelected:x===ee[n].version_id,checkable:$,onCheck:ne,isChecked:G.includes(ee[n].version_id||"")},t)}})})]})]})]})},ve=e=>{if(e.name.endsWith("/"))return"";const t=p.c9.now(),n=p.c9.fromISO(e.last_modified);return t.hasSame(n,"day")&&t.hasSame(n,"month")&&t.hasSame(n,"year")?`Today, ${n.toFormat("HH:mm")}`:n.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},_e=e=>e.name.endsWith("/")||!e.size?"-":(0,j.nO)(String(e.size)),Se=[{label:"Name",elementKey:"name",renderFunction:U,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0}],Oe=[{label:"Name",elementKey:"name",renderFunction:U,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:e=>e?"Yes":"No",width:60}];var we=n(46537);const Te=()=>{const e=(0,l.jL)(),t=(0,i.g)(),n=(0,i.Zp)(),[a,c]=(0,s.useState)("ASC"),[m,x]=(0,s.useState)("name"),p=t.bucketName||"",j=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),b=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),g=(0,o.d4)(we.s$),f=!(null===g||void 0===g||!g.includes("object-browser-only")),v=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),S=(0,o.d4)((e=>e.objectBrowser.records)),O=(0,o.d4)((e=>e.objectBrowser.searchObjects)),w=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),T=(0,o.d4)((e=>e.objectBrowser.connectionError)),y=(0,o.d4)((e=>e.system.anonymousMode)),E=(0,_._)(p,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET]),I=S.filter((e=>{if(""===O)return!0;return e.name.toLowerCase().indexOf(O.toLowerCase())>=0})).sort((0,A.$w)(m));let N=[];N="ASC"===a?I:I.reverse();const k=[{type:"view",tooltip:"View",onClick:t=>{var s;const o=t.name||"",i=`/browser/${encodeURIComponent(p)}${o?`/${encodeURIComponent(o)}`:""}`;!y||null!==(s=t.name)&&void 0!==s&&s.endsWith("/")?(e((0,d.KX)([])),n(i),y||(e((0,d.TO)(!0)),e((0,d.SK)(!0))),e((0,d.A7)(o))):(0,R._)(e,p,o,t)},sendOnlyId:!1}];let B=E||y?"This location is empty"+(v?"":", please try uploading a new file"):(0,r.vj)([r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],"view Objects in this bucket");T&&(B="Objects List unavailable. Please review your WebSockets configuration and try again");let F="calc(100vh - 290px)";return f&&(F="calc(100vh - 315px)"),(0,C.jsx)(h.bQt,{itemActions:k,columns:v?Oe:Se,isLoading:b,entityName:"Objects",idField:"name",records:N,customPaperHeight:F,selectedItems:w,onSelect:y?void 0:t=>{const n=t.target,s=n.value,o=n.checked;let i=[...w];return o?i.push(s):i=i.filter((e=>e!==s)),e((0,d.KX)(i)),e((0,d.A7)(null)),i},customEmptyMessage:B,sortEnabled:{currentSort:m,currentDirection:a,onSortClick:t=>{const n=u()(t,"sortDirection","DESC");x(t.sortBy),c(n),e((0,d.Yw)(!0))}},onSelectAll:()=>{if(e((0,d.A7)(null)),w.length===N.length)return void e((0,d.KX)([]));const t=N.map((e=>e.name));e((0,d.KX)(t))},rowStyle:e=>{var t;let{index:n}=e;return null!==(t=N[n])&&void 0!==t&&t.delete_flag?"deleted":""},sx:{minHeight:j?"100%":"initial"},noBackground:!0})};var Ce=n(64681);const ye=()=>{const e=(0,l.jL)(),t=(0,o.d4)((e=>e.objectBrowser.searchObjects));return(0,C.jsx)(Ce.A,{placeholder:"Start typing to filter objects in the bucket",onChange:t=>{e((0,d.$X)(t))},value:t})};var Ee=n(30614);const Ie=(0,S.A)(s.lazy((()=>n.e(5941).then(n.bind(n,65941))))),Ae=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,30718))))),Ne=(0,S.A)(s.lazy((()=>n.e(2704).then(n.bind(n,32704))))),ke=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,37524))))),Be={borderWidth:2,borderRadius:2,borderColor:"transparent",outline:"none"},Fe={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#2196f3"},Le={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#00e676"},Ve=()=>{var e;const t=(0,l.jL)(),n=(0,i.g)(),c=(0,i.Zp)(),b=(0,i.zy)(),g=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),f=(0,o.d4)((e=>e.objectBrowser.rewind.bucketToRewind)),v=(0,o.d4)((e=>e.objectBrowser.versionsMode)),S=(0,o.d4)((e=>e.objectBrowser.showDeleted)),y=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),E=(0,o.d4)((e=>e.objectBrowser.selectedInternalPaths)),R=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),P=(0,o.d4)((e=>e.objectBrowser.simplePath)),$=(0,o.d4)((e=>e.objectBrowser.versionInfo)),U=(0,o.d4)((e=>e.objectBrowser.lockingEnabled)),z=(0,o.d4)((e=>e.objectBrowser.downloadRenameModal)),G=(0,o.d4)((e=>e.objectBrowser.selectedPreview)),M=(0,o.d4)((e=>e.objectBrowser.shareFileModalOpen)),J=(0,o.d4)((e=>e.objectBrowser.previewOpen)),K=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),W=(0,o.d4)((e=>e.system.anonymousMode)),H=(0,o.d4)((e=>e.objectBrowser.anonymousAccessOpen)),Y=(0,o.d4)((e=>{var t;return(null===(t=e.objectBrowser)||void 0===t?void 0:t.records)||[]})),Z=(0,o.d4)(B.Nx),q=(0,o.d4)(B.fT),[Q,X]=(0,s.useState)(!1),[ee,te]=(0,s.useState)(!1),[ne,se]=(0,s.useState)(!1),[oe,ie]=(0,s.useState)(!1),[ae,le]=(0,s.useState)(!1),[de,ue]=(0,s.useState)(null),[he,me]=(0,s.useState)(null),[xe,pe]=(0,s.useState)(!1),je=N($.status),be=n.bucketName||"",ge=b.pathname.split(`/browser/${be}/`),ve=2===ge.length?decodeURIComponent(ge[1]):"",_e=ve.split("/").filter((e=>""!==e));let Se=[be];_e.length>0&&(Se=Se.concat(_e));const Oe=(0,s.useRef)(null),we=(0,s.useRef)(null),Ce=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),Ve=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],De=Se.join("/"),Re=function(e,t){const n=T(e,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).reduce(((e,t)=>{const n=w(t);return n&&e.push(`.${n}`),e}),[]);return[...new Set(n)].join(",")}(Ce,De,Ve),Pe=T(Ce,De,Ve),$e=(0,_._)([De,...Pe],[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),Ue=(0,_._)(be,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING]),ze=(0,_._)([De,...Pe],[r.OV.S3_DELETE_OBJECT]),Ge=(0,_._)([De,...Pe],Ve)||W,Me=(0,_._)(be,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),Je=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),Ke=(()=>{let e=!1;if(1===Je.length){e=!!Y.find((e=>e.name===`${Je[0]}`&&e.delete_flag))}return e})(),We=(0,s.useCallback)((()=>{const e=Je[0];!xe&&e&&a.F.buckets.getObjectMetadata(be,{prefix:e}).then((e=>{let t=u()(e.data,"objectMetadata",{});pe(!0),me(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),pe(!0)}))}),[be,Je,xe]);(0,s.useEffect)((()=>{be&&!Ke&&We()}),[be,Je,We,Ke]),(0,s.useEffect)((()=>{g&&f!==be&&t((0,d.rS)())}),[g,f,be,t]),(0,s.useEffect)((()=>{null!==we.current&&(we.current.setAttribute("directory",""),we.current.setAttribute("webkitdirectory",""))}),[we]),(0,s.useEffect)((()=>{if(1===Je.length){const e=Je[0],t=e.endsWith("/");let n=(0,A.IZ)(he,e);le(!("none"===n||!$e)),ie(!(!$e||t))}else ie(!1),le(!1)}),[Je,$e,he]),(0,s.useEffect)((()=>{de||W||a.F.buckets.getBucketQuota(be).then((e=>{let t=null;e.data.quota&&(t=e.data),ue(t)})).catch((e=>{console.error("Error Getting Quota Status: ",e.error.detailedMessage),ue(null)}))}),[de,be,W]),(0,s.useEffect)((()=>{Je.length>0?t((0,d.TO)(!0)):0!==Je.length||null!==E||R||t((0,d.TO)(!1))}),[Je,E,t,R]),(0,s.useEffect)((()=>{ne||(t((0,B.ZU)(!0)),se(!0))}),[ne,t,se]),(0,s.useEffect)((()=>{!R&&!Z||W||a.F.buckets.bucketInfo(be).then((e=>{t((0,B.ZU)(!1)),t((0,B.$T)(e.data))})).catch((e=>{t((0,B.ZU)(!1)),t((0,O.C9)((0,m.S)(e)))}))}),[be,Z,t,W,R]),(0,s.useEffect)((()=>{""!==K&&a.F.buckets.getBucketRetentionConfig(K).then((e=>{t((0,d.PJ)(e.data))})).catch((()=>{t((0,d.PJ)(null))}))}),[K,t]);const He=e=>{if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var t=[];for(let n=0;n{let s="";P&&(s=P.endsWith("/")?P:P+"/");((e,n,s,o)=>{let i=i=>new Promise(((a,l)=>{let r=`api/v1/buckets/${n}/objects/upload`;const c=i.name,h=new Blob([i],{type:i.type}),m=(e=>e.replace(/(^|\/)\.\//g,"/"))(u()(i,"path","")),x=u()(i,"webkitRelativePath","");let p=o;const j=(0,k.E0)(8);""!==m?p=m:""!==x&&(p=x);let b="";if(""!==s||""!==p){const e=p.split("/").slice(0,-1).join("/"),t=s.endsWith("/")?s.slice(0,-1):s;b=`${t}${t.endsWith("/")||""===e||e.startsWith("/")?"":"/"}${e}${!e.endsWith("/")||""===e.trim()&&!s.endsWith("/")?"/":""}`}r=""!==b?`${r}?prefix=${encodeURIComponent(b+c)}`:`${r}?prefix=${encodeURIComponent(c)}`;const g=encodeURIComponent(`${n}-${b}-${(new Date).getTime()}-${Math.random()}`);let f=new XMLHttpRequest;f.open("POST",r,!0),W&&f.setRequestHeader("X-Anonymous","1");let v=`An error occurred while uploading the file${e.length>1?"s":""}.`;const _={413:"Error - File size too large"};f.withCredentials=!1,f.onload=function(){if(f.status>=200&&f.status<300)t((0,d.rx)(g)),a({status:f.status}),(0,k.vy)(j);else{if(_[f.status])v=_[f.status];else if(f.response)try{const e=JSON.parse(f.response);v=e.detailedMessage}catch(e){v="something went wrong"}t((0,d.iL)({instanceID:g,msg:v})),l({status:f.status,message:v}),(0,k.vy)(j)}},f.upload.addEventListener("error",(()=>{l(v),t((0,d.iL)({instanceID:g,msg:"A network error occurred."}))})),f.upload.addEventListener("progress",(e=>{const n=Math.floor(100*e.loaded/e.total);t((0,d.DW)({instanceID:g,progress:n}))})),f.onerror=()=>{l(v),t((0,d.iL)({instanceID:g,msg:"A network error occurred."}))},f.onloadend=()=>{0===e.length&&t((0,d.Yw)(!0))},f.onabort=()=>{t((0,d.Dm)(g))};const S=new FormData;void 0!==i.size&&(S.append(i.size.toString(),h,c),(0,k.FP)(j,f),t((0,d.cP)({ID:j,bucketName:n,done:!1,instanceID:g,percentage:0,prefix:`${b}${c}`,type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,k.vx)(j,S))}));const a=[];t((0,d.Nu)());for(let t=0;t{const n=e.filter((e=>"rejected"===e.status));if(n.length>0){const e=a.length,s={errorMessage:"There were some errors during file upload",detailedError:`Uploaded files ${a.length-n.length}/${e}`};t((0,O.C9)(s))}t((0,d.Yw)(!0))}))})(e,be,s,n)}),[be,t,P,W]),Ze=(0,s.useCallback)((e=>{if(e&&e.length>0&&Ge){let n=e[0].path,s=e;Re.length>0&&(s=e.filter((e=>{const t=w(e.name);return Re.includes(t)}))),s.length?(Ye(s,n),console.log(`${s.length} Allowed Files Processed out of ${e.length}.`,De,...Pe),s.length!==e.length&&t((0,O.C9)({errorMessage:"Upload is restricted.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))):(t((0,O.C9)({errorMessage:"Could not process drag and drop.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")})),console.error("Could not process drag and drop . upload may be restricted.",De,...Pe))}Ge||t((0,O.C9)({errorMessage:"Upload not allowed",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))}),[Ye]),{getRootProps:qe,getInputProps:Qe,isDragActive:Xe,isDragAccept:et}=(0,x.VB)({noClick:!0,onDrop:Ze}),tt=(0,s.useMemo)((()=>({...Be,...Xe?Fe:{},...et?Le:{}})),[Xe,et]),nt=e=>{if(t((0,d.A7)(null)),t((0,d.cQ)({status:!1})),y&&null!==E){const e=ve.split("/");e.pop();let t="";e&&e.length>0&&(t=`${e.join("/")}/`),c(`/browser/${encodeURIComponent(be)}/${encodeURIComponent(t)}`)}t((0,d.TO)(!1)),e&&t((0,d.Yw)(!0))};let st=p.c9.now();null!==q&&void 0!==q&&q.creation_date&&(st=p.c9.fromISO(q.creation_date));const ot=(null===Je||void 0===Je?void 0:Je.length)<=1?"Download Selected":" Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.",it=[{action:()=>{t((0,F.op)(be))},label:"Download",disabled:!$e||Ke,icon:(0,C.jsx)(h.s3U,{}),tooltip:$e?ot:(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download objects from this bucket")},{action:()=>{t((0,F.mS)())},label:"Share",disabled:1!==Je.length||!oe||Ke,icon:(0,C.jsx)(h.liv,{}),tooltip:oe?"Share Selected File":"Sharing unavailable"},{action:()=>{t((0,F.HS)())},label:"Preview",disabled:1!==Je.length||!ae||Ke,icon:(0,C.jsx)(h.cyn,{}),tooltip:ae?"Preview Selected File":"Preview unavailable"},{action:()=>{t((0,F.oz)())},label:"Anonymous Access",disabled:1!==Je.length||!Je[0].endsWith("/")||!Me,icon:(0,C.jsx)(h._kf,{}),tooltip:1===Je.length&&Je[0].endsWith("/")?"Set Anonymous Access to this Folder":"Anonymous Access unavailable"},{action:()=>{X(!0)},label:"Delete",icon:(0,C.jsx)(h.d7y,{}),disabled:!ze||0===Je.length,tooltip:ze?"Delete Selected Files":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,C.jsxs)(s.Fragment,{children:[M&&G&&(0,C.jsx)(Ae,{open:M,closeModalAndRefresh:()=>{t((0,d.Lf)(!1)),t((0,d.go)(null))},bucketName:be,dataObject:{name:G.name,last_modified:"",version_id:G.version_id}}),Q&&(0,C.jsx)(Ie,{deleteOpen:Q,selectedBucket:be,selectedObjects:Je,closeDeleteModalAndRefresh:e=>{X(!1),e&&(t((0,O.Hk)("Objects deleted successfully.")),t((0,d.KX)([])),t((0,d.Yw)(!0)))},versioning:$}),ee&&(0,C.jsx)(Ne,{open:ee,closeModalAndRefresh:()=>{te(!1)},bucketName:be}),J&&G&&(0,C.jsx)(ke,{open:J,bucketName:be,actualInfo:{name:G.name||"",last_modified:"",version_id:G.version_id||"",size:G.size||0},onClosePreview:()=>{t((0,d.xE)(!1)),t((0,d.go)(null))}}),!!z&&(0,C.jsx)(re,{open:!!z,closeModal:()=>{t((0,d.Ew)(null))},currentItem:(null===(e=z.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:be,internalPaths:ve,actualInfo:{name:z.name,last_modified:"",version_id:z.version_id,size:z.size}}),H&&(0,C.jsx)(Ee.default,{onClose:()=>{t((0,d.I8)(!1))},bucket:be,modalOpen:H,prefilledRoute:`${Je[0]}*`}),(0,C.jsxs)(h.Mxu,{variant:"full",children:[W&&(0,C.jsx)("div",{style:{paddingBottom:16},children:(0,C.jsx)(ye,{})}),(0,C.jsx)(h.azJ,{withBorders:!0,sx:{padding:"0 5px"},children:(0,C.jsx)(h.lcx,{icon:(0,C.jsx)("span",{children:(0,C.jsx)(h.brV,{style:{width:30}})}),title:be,subTitle:W?null:(0,C.jsxs)(h.azJ,{sx:{"& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}}},children:[(0,C.jsxs)("span",{className:"detailsSpacer",children:["Created on:\xa0",(0,C.jsx)("strong",{children:null!==q&&void 0!==q&&q.creation_date?st.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,C.jsxs)("span",{className:"detailsSpacer",children:["Access:\xa0\xa0",(0,C.jsx)("strong",{children:(null===q||void 0===q?void 0:q.access)||""})]}),q&&(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("span",{className:"detailsSpacer",children:[q.size&&(0,C.jsx)(s.Fragment,{children:(0,j.qO)(q.size)}),q.size&&de&&(0,C.jsxs)(s.Fragment,{children:[" ","/ ",(0,j.qO)(de.quota||0)]}),q.size&&q.objects?" - ":"",q.objects&&(0,C.jsxs)(s.Fragment,{children:[q.objects,"\xa0Object",q.objects&&1!==q.objects?"s":""]})]})})]}),actions:(0,C.jsxs)(s.Fragment,{children:[!W&&(0,C.jsx)(L.A,{tooltip:Ue?"Rewind Bucket":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING],"apply rewind in this bucket"),children:(0,C.jsx)(h.$nd,{id:"rewind-objects-list",label:"Rewind",icon:(0,C.jsx)(h.Exy,{color:"alert",dotOnly:!0,invisible:!g,children:(0,C.jsx)(h.osr,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:()=>{te(!0)},disabled:!je||!Ue})}),(0,C.jsx)(L.A,{tooltip:"Reload List",children:(0,C.jsx)(h.$nd,{id:"refresh-objects-list",label:"Refresh",icon:(0,C.jsx)(h.fNY,{}),variant:"regular",onClick:()=>{v?t((0,d.SK)(!0)):(t((0,d.A3)()),t((0,d.Yw)(!0)))},disabled:!W&&(!(0,_._)(be,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||g)})}),(0,C.jsx)("input",{type:"file",multiple:!0,accept:Re||void 0,onChange:He,style:{display:"none"},ref:Oe}),(0,C.jsx)("input",{type:"file",multiple:!0,onChange:He,style:{display:"none"},ref:we}),(0,C.jsx)(V,{bucketName:be,uploadPath:De,uploadFileFunction:e=>{Oe&&Oe.current&&Oe.current.click(),e()},uploadFolderFunction:e=>{we&&we.current&&we.current.click(),e()}})]}),bottomBorder:!1})}),(0,C.jsxs)("div",{id:"object-list-wrapper",...qe({style:{...tt}}),children:[(0,C.jsx)("input",{...Qe()}),(0,C.jsxs)(h.azJ,{withBorders:!0,sx:{display:"flex",borderTop:0,padding:0,"& .hideListOnSmall":{"@media (max-width: 799px)":{display:"none"}}},children:[v?(0,C.jsx)(s.Fragment,{children:null!==E&&(0,C.jsx)(fe,{internalPaths:E,bucketName:be})}):(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:{width:"100%",position:"relative","&.detailsOpen":{"@media (max-width: 799px)":{display:"none"}}},className:y?"detailsOpen":"",children:[!W&&(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{padding:"12px 14px 5px"},children:(0,C.jsx)(I,{bucketName:be,internalPaths:ve,additionalOptions:!je||g?null:(0,C.jsx)(h.Sc0,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:()=>{t((0,d.A3)()),t((0,d.lA)(!S)),nt(!0)},checked:S,sx:{marginLeft:5,"@media (max-width: 600px)":{marginLeft:0,flexDirection:"row"}}}),hidePathButton:!1})}),(0,C.jsx)(Te,{})]})}),!W&&(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,C.jsxs)(D,{open:y,closePanel:()=>{nt(!1)},className:""+(v?"hideListOnSmall":""),children:[Je.length>0&&(0,C.jsx)(h.Smc,{items:it,title:"Selected Objects:"}),null!==E&&(0,C.jsx)(ce,{internalPaths:E,bucketName:be,onClosePanel:nt,versioningInfo:$,locking:U})]})})]})]})]})]})};var De=n(18218),Re=n(69772),Pe=n(48793),$e=n(59707),Ue=n(88617);const ze=e=>{let{bucketName:t}=e;const n=(0,l.jL)(),a=(0,o.d4)(we.s$),c=(0,o.d4)((e=>e.objectBrowser.versionsMode)),u=(0,o.d4)((e=>e.objectBrowser.versionedFile)),m=(0,o.d4)((e=>e.objectBrowser.searchVersions)),x=!(null===a||void 0===a||!a.includes("object-browser-only")),p=(0,i.Zp)(),j=(0,De.A)(t,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_DELETE_BUCKET,r.OV.S3_GET_BUCKET_NOTIFICATIONS,r.OV.S3_PUT_BUCKET_NOTIFICATIONS,r.OV.S3_GET_REPLICATION_CONFIGURATION,r.OV.S3_PUT_REPLICATION_CONFIGURATION,r.OV.ADMIN_GET_BUCKET_QUOTA,r.OV.ADMIN_SET_BUCKET_QUOTA,r.OV.S3_PUT_BUCKET_TAGGING,r.OV.S3_GET_BUCKET_TAGGING,r.OV.S3_LIST_BUCKET_VERSIONS,r.OV.S3_GET_BUCKET_POLICY_STATUS,r.OV.S3_DELETE_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),b=(0,C.jsx)(s.Fragment,{children:c?(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(Ce.A,{placeholder:`Start typing to filter versions of ${u}`,onChange:e=>{n((0,d.aj)(e))},value:m})}):(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:t,errorProps:{disabled:!0},children:(0,C.jsx)(ye,{})})});return(0,s.useEffect)((()=>{n((0,O.ph)("object_browser"))}),[]),(0,C.jsx)(s.Fragment,{children:x?(0,C.jsxs)(h.xA9,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,C.jsx)(h.xA9,{children:(0,C.jsx)(Re.A,{marginRight:30,marginTop:10})}),(0,C.jsxs)(h.xA9,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[b,(0,C.jsx)($e.A,{})]})]}):(0,C.jsx)(Pe.A,{label:(0,C.jsx)(h.EGL,{label:"Object Browser",onClick:()=>{p(r.zZ.OBJECT_BROWSER_VIEW)}}),actions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(_.R,{scopes:r.pC[r.ac.BUCKET_ADMIN],resource:t,errorProps:{disabled:!0},children:(0,C.jsx)(L.A,{tooltip:j?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+r.ac.BUCKET_ADMIN+" permisions.",children:(0,C.jsx)(h.$nd,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:()=>p(`/buckets/${t}/admin`),icon:(0,C.jsx)(h.Zes,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),(0,C.jsx)(Ue.A,{})]}),middleComponent:b})})},Ge=()=>{const e=(0,l.jL)(),t=(0,i.g)(),n=(0,i.zy)(),c=(0,o.d4)((e=>e.objectBrowser.loadingVersioning)),u=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),h=(0,o.d4)((e=>e.objectBrowser.rewind.dateToRewind)),m=(0,o.d4)((e=>e.objectBrowser.showDeleted)),x=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),p=(0,o.d4)((e=>e.objectBrowser.loadingLocking)),j=(0,o.d4)((e=>e.objectBrowser.reloadObjectsList)),b=(0,o.d4)((e=>e.objectBrowser.simplePath)),g=(0,o.d4)((e=>e.system.anonymousMode)),f=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),v=(0,o.d4)((e=>e.objectBrowser.records)),_=t.bucketName||"",S=n.pathname.split(`/browser/${encodeURIComponent(_)}/`),O=2===S.length?decodeURIComponent(S[1]):"",w=(0,s.useCallback)((t=>{let n=(new Date).toISOString();null!==h&&u&&(n=h);e({type:"socket/OBRequest",payload:{bucketName:_,path:t,rewindMode:u||m,date:n}})}),[_,m,h,u,e]),T=(0,s.useCallback)((function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e((0,d.cQ)({status:!1}));let n=O;O.endsWith("/")||""===O||(n=`${O.split("/").slice(0,-1).join("/")}/`),"/"===n&&(n=""),(n!==b||_!==f||t)&&(e((0,d.u)(!0)),w(n))}),[O,e,b,f,_,w]);(0,s.useEffect)((()=>()=>{e({type:"socket/OBCancelLast"})}),[e]),(0,s.useEffect)((()=>{e((0,d.vn)(!0)),O.endsWith("/")||""===O?(e((0,d.TO)(!1)),e((0,d.A7)(null)),e((0,d.Qy)(!0))):(e((0,d.oe)(!0)),e((0,d.TO)(!0)),e((0,d.SK)(!0)),e((0,d.A7)(O||"")))}),[_,O,h,u,e]),(0,s.useEffect)((()=>{T(!1)}),[T]),(0,s.useEffect)((()=>{j&&0===v.length&&!x&&T(!0)}),[j,v,x,T]);const y=(0,De.A)(_,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||g;return(0,s.useEffect)((()=>{c&&!g&&(y?a.F.buckets.getBucketVersioning(_).then((t=>{e((0,d.AP)(t.data)),e((0,d.vn)(!1))})).catch((t=>{console.error("Error Getting Object Versioning Status: ",t.error.detailedMessage),e((0,d.vn)(!1))})):(e((0,d.vn)(!1)),e((0,d.A3)())))}),[_,c,e,y,g]),(0,s.useEffect)((()=>{p&&(y?a.F.buckets.getBucketObjectLockingStatus(_).then((t=>{e((0,d.xW)(t.data.object_locking_enabled)),e((0,d.Qy)(!1))})).catch((t=>{console.error("Error Getting Object Locking Status: ",t.error.detailedMessage),e((0,d.Qy)(!1))})):(e((0,d.A3)()),e((0,d.Qy)(!1))))}),[_,p,e,y]),(0,C.jsxs)(s.Fragment,{children:[!g&&(0,C.jsx)(ze,{bucketName:_}),(0,C.jsx)(Ve,{})]})}},30718:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_});var s=n(65043),o=n(22166),i=n(89923),a=n(61476),l=n.n(a),r=n(94141),d=n(24241),c=n(70579);const u=e=>{let{id:t,label:n,maxSeconds:o,entity:a,onChange:l}=e;const r=Math.floor(o/86400),u=Math.floor(o%86400/3600),h=Math.floor(o%3600/60),[m,x]=(0,s.useState)(0),[p,j]=(0,s.useState)(0),[b,g]=(0,s.useState)(0),[f,v]=(0,s.useState)(!0),[_,S]=(0,s.useState)(null);(0,s.useEffect)((()=>{x(r),j(u),g(h)}),[r,u,h]),(0,s.useEffect)((()=>{var e,t,n;isNaN(p)||isNaN(m)||isNaN(b)||S((e=m,t=p,n=b,d.c9.now().plus({hours:t+24*e,minutes:n}).toISO()))}),[m,p,b]),(0,s.useEffect)((()=>{if(f&&_){const e=d.c9.fromISO(_).toFormat("yyyy-MM-dd HH:mm:ss");l(e.split(" ").join("T"),!0)}else l("0000-00-00",!1)}),[_,l,f]),(0,s.useEffect)((()=>{let e=!0;(m<0||m>7||m>r||isNaN(m))&&(e=!1),(p<0||p>23||isNaN(p))&&(e=!1),(b<0||b>59||isNaN(b))&&(e=!1),m===r&&(p>u&&(e=!1),p===u&&b>h&&(e=!1)),m<=0&&p<=0&&b<=0&&(e=!1),v(e)}),[_,r,u,h,l,m,p,b]);const O={"& .textBoxContainer":{minWidth:0},"& input":{textAlign:"center",paddingRight:10,paddingLeft:10,width:40}};return(0,c.jsxs)(i.azJ,{className:"inputItem",children:[(0,c.jsx)(i.azJ,{sx:{display:"flex",alignItems:"center",marginBottom:5},children:(0,c.jsx)(i.l1Y,{htmlFor:t,children:n})}),(0,c.jsxs)(i.azJ,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-evenly",gap:10,"& .reverseInput":{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}}},children:[(0,c.jsx)(i.azJ,{children:(0,c.jsx)(i.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"7",label:"Days",name:t,onChange:e=>{x(parseInt(e.target.value))},value:m.toString(),sx:O,noLabelMinWidth:!0})}),(0,c.jsx)(i.azJ,{children:(0,c.jsx)(i.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:e=>{j(parseInt(e.target.value))},value:p.toString(),sx:O,noLabelMinWidth:!0})}),(0,c.jsx)(i.azJ,{children:(0,c.jsx)(i.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:e=>{g(parseInt(e.target.value))},value:b.toString(),sx:O,noLabelMinWidth:!0})})]}),(0,c.jsx)(i.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10,marginBottom:15,"& .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},"& .invalidDurationText":{marginTop:15,display:"flex",color:"red",fontSize:11}},children:f&&_?(0,c.jsxs)("div",{className:"validityText",children:[(0,c.jsx)(i.qYV,{}),(0,c.jsxs)("div",{children:[a," will be available until:"]})," ",(0,c.jsx)("div",{className:"validTill",children:d.c9.fromISO(_).toFormat("MM/dd/yyyy HH:mm:ss ZZZZ")})]}):(0,c.jsx)("div",{className:"invalidDurationText",children:"Please select a valid duration."})})]})};var h=n(56483),m=n(64159),x=n(21383),p=n(56629),j=n(53518),b=n(81708),g=n(6035),f=n(93950),v=n.n(f);const _=e=>{let{open:t,closeModalAndRefresh:n,bucketName:a,dataObject:d}=e;const f=(0,x.jL)(),_=(0,o.d4)(m.Rq),S=(0,o.d4)(g.yL),[O,w]=(0,s.useState)(""),[T,C]=(0,s.useState)(!0),[y,E]=(0,s.useState)(!1),[I,A]=(0,s.useState)(""),[N,k]=(0,s.useState)(!0),[B,F]=(0,s.useState)("null"),L=v()(((e,t)=>{k(t),t?A(e):(A(""),w(""))}),300);return(0,s.useEffect)((()=>{f((0,b.Ex)())}),[f]),(0,s.useEffect)((()=>{if(void 0===d.version_id)return _?(p.F.buckets.listObjects(a,{prefix:d.name||"",with_versions:_}).then((e=>{const t=(e.data.objects||[]).find((e=>e.is_latest));F(t?`${t.version_id}`:"null")})).catch((e=>{f((0,m.Dy)((0,j.S)(e.error)))})),void C(!1)):(F("null"),void C(!1));F(d.version_id||"null"),C(!1)}),[a,d,_,f]),(0,s.useEffect)((()=>{if(N&&!T){E(!0),w("");const e=new Date(`${I}`),t=new Date,n=Math.ceil((e.getTime()-t.getTime())/1e3);n>0&&p.F.buckets.shareObject(a,{prefix:d.name||"",version_id:B,expires:""!==I?`${n}s`:""}).then((e=>{w(e.data),E(!1)})).catch((e=>{f((0,m.Dy)((0,j.S)(e.error))),w(""),E(!1)}))}}),[d,I,a,N,w,f,_,T,B]),(0,c.jsx)(s.Fragment,{children:(0,c.jsxs)(r.A,{title:"Share File",titleIcon:(0,c.jsx)(i.liv,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:()=>{n()},children:[T&&(0,c.jsx)(i.xA9,{item:!0,xs:12,children:(0,c.jsx)(i.z21,{})}),!T&&(0,c.jsxs)(s.Fragment,{children:[(0,c.jsx)(i.xA9,{item:!0,xs:12,sx:{fontSize:14,fontWeight:400},children:(0,c.jsx)(i.m_M,{placement:"right",tooltip:(0,c.jsxs)("span",{children:["You can reset your session by logging out and logging back in to the web UI. ",(0,c.jsx)("br",{})," ",(0,c.jsx)("br",{}),"You can increase the maximum configuration time by setting the MINIO_STS_DURATION environment variable on all your nodes. ",(0,c.jsx)("br",{})," ",(0,c.jsx)("br",{}),"You can use ",(0,c.jsx)("b",{children:"mc share"})," as an alternative to this UI, where the session length does not limit the URL validity."]}),children:(0,c.jsxs)("span",{children:["The following URL lets you share this object without requiring a login. ",(0,c.jsx)("br",{}),"The URL expires automatically at the earlier of your configured time (",(0,h.K7)(S),") or the expiration of your current web session."]})})}),(0,c.jsx)("br",{}),(0,c.jsx)(i.xA9,{item:!0,xs:12,children:(0,c.jsx)(u,{id:"date",label:"Active for",maxSeconds:S,onChange:L,entity:"Link"})}),(0,c.jsx)(i.xA9,{item:!0,xs:12,sx:{marginBottom:10},children:(0,c.jsx)(i.EmB,{actionButton:(0,c.jsx)(l(),{text:O,children:(0,c.jsx)(i.$nd,{id:"copy-path",variant:"regular",onClick:()=>{f((0,m.h0)("Share URL Copied to clipboard"))},disabled:""===O||y,style:{width:"28px",height:"28px",padding:"0px"},icon:(0,c.jsx)(i.TdU,{})})}),children:O})})]})]})})}},37524:(e,t,n)=>{n.r(t),n.d(t,{default:()=>g});var s=n(65043),o=n(94141),i=n(89923),a=n(33097),l=n.n(a),r=n(93445),d=n(56629),c=n(79355),u=n(97806),h=n(6584),m=n(70579);c.EA.workerSrc="./scripts/pdf.worker.min.mjs";const x=e=>{let{path:t,loading:n,onLoad:o,downloadFile:a}=e;const[l,r]=(0,s.useState)(!1),[d,c]=(0,s.useState)(0);if(!t)return null;const x=d>5?5:d,p=Array.from(Array(x).keys());return(0,m.jsxs)(s.Fragment,{children:[l&&0===d&&(0,m.jsx)(i.Wei,{variant:"error",title:"Error",message:(0,m.jsxs)(s.Fragment,{children:["File preview couldn't be displayed, Please try Download instead.",(0,m.jsx)(i.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(i.$nd,{id:"download-preview",onClick:a,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!n&&!l&&(0,m.jsx)(i.Wei,{variant:"warning",title:"File Preview",message:(0,m.jsxs)(s.Fragment,{children:["This is a File Preview for the first ",p.length," pages of the document, if you wish to work with the full document please download instead.",(0,m.jsx)(i.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(i.$nd,{id:"download-preview",onClick:a,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!l&&(0,m.jsx)(i.azJ,{sx:{overflowY:"auto","& .react-pdf__Page__canvas":{margin:"0 auto",backgroundColor:"transparent"}},children:(0,m.jsx)(u.A,{file:t,onLoadSuccess:e=>{let{_pdfInfo:t}=e;c(t.numPages||0),r(!1),o()},onLoadError:e=>{r(!0),o(),console.error(e)},children:p.map((e=>(0,m.jsx)(h.A,{pageNumber:e+1,renderAnnotationLayer:!1,renderTextLayer:!1,renderForms:!1},`render-page-${e}`)))})})]})};var p=n(48245),j=n(21383);const b=e=>{let{bucketName:t,actualInfo:n,isFullscreen:o=!1}=e;const a=(0,j.jL)(),[c,u]=(0,s.useState)(!0),[h,b]=(0,s.useState)(null),[g,f]=(0,s.useState)(!1),v=(null===n||void 0===n?void 0:n.name)||"",_=(0,s.useCallback)((()=>{g||d.F.buckets.getObjectMetadata(t,{prefix:v,versionID:n.version_id||""}).then((e=>{let t=l()(e.data,"objectMetadata",{});f(!0),b(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),f(!0)}))}),[t,v,g,n.version_id]);(0,s.useEffect)((()=>{t&&v&&_()}),[t,v,_]);let S="";if(n){let e=document.baseURI.replace(window.location.origin,"");S=`${window.location.origin}${e}api/v1/buckets/${encodeURIComponent(t)}/objects/download?preview=true&prefix=${encodeURIComponent(n.name||"")}`,n.version_id&&(S=S.concat(`&version_id=${n.version_id}`))}let O=(0,r.IZ)(h,v);const w=()=>{u(!1)};return(0,m.jsxs)(s.Fragment,{children:["none"!==O&&c&&(0,m.jsx)(i.xA9,{item:!0,xs:12,children:(0,m.jsx)(i.z21,{})}),g?(0,m.jsxs)(i.azJ,{sx:{textAlign:"center","& .iframeContainer":{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},"& .iframeBase":{backgroundColor:"#fff"},"& .iframeHidden":{display:"none"}},children:["video"===O&&(0,m.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,m.jsx)("source",{src:S,type:"video/mp4"})}),"audio"===O&&(0,m.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:w,children:(0,m.jsx)("source",{src:S,type:"audio/mpeg"})}),"image"===O&&(0,m.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:S,alt:"preview",onLoad:w}),"pdf"===O&&(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(x,{path:S,onLoad:w,loading:c,downloadFile:()=>(0,p._)(a,t,S,n)})}),"none"===O&&(0,m.jsx)("div",{children:(0,m.jsx)(i.Wei,{message:" File couldn't be previewed using file extension or mime type. Please try Download instead",title:"Preview unavailable",sx:{margin:"15px 0"}})}),"none"!==O&&"video"!==O&&"audio"!==O&&"image"!==O&&"pdf"!==O&&(0,m.jsx)("div",{className:"iframeBase "+(c?"iframeHidden":""),children:(0,m.jsx)("iframe",{src:S,title:"File Preview",allowTransparency:!0,className:`iframeContainer ${o?"fullHeight":O}`,onLoad:w,children:"File couldn't be loaded. Please try Download instead"})})]}):null]})},g=e=>{let{open:t,bucketName:n,actualInfo:a,onClosePreview:l}=e;return(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(o.A,{modalOpen:t,title:`Preview - ${null===a||void 0===a?void 0:a.name}`,onClose:l,wideLimit:!1,titleIcon:(0,m.jsx)(i.jG,{}),children:(0,m.jsx)(b,{bucketName:n,actualInfo:a})})})}},72237:(e,t,n)=>{n.d(t,{A:()=>i});var s=n(65043),o=n(70579);const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,o.jsx)(s.Suspense,{fallback:t,children:(0,o.jsx)(e,{...n})})}}},25448:(e,t,n)=>{n.d(t,{A:()=>i});var s=n(65043),o=n(20649);const i=(e,t)=>{const[n,i]=(0,s.useState)(!1);return[n,(n,s,a,l)=>{i(!0),o.A.invoke(n,s,a,l).then((t=>{i(!1),e(t)})).catch((e=>{i(!1),t(e)}))}]}},94141:(e,t,n)=>{n.d(t,{A:()=>c});var s=n(65043),o=n(22166),i=n(89923),a=n(21383),l=n(64159),r=n(49555),d=n(70579);const c=e=>{let{onClose:t,modalOpen:n,title:c,children:u,wideLimit:h=!0,titleIcon:m=null,iconColor:x="default",sx:p}=e;const j=(0,a.jL)(),[b,g]=(0,s.useState)(!1),f=(0,o.d4)((e=>e.system.modalSnackBar));(0,s.useEffect)((()=>{j((0,l.h0)(""))}),[j]),(0,s.useEffect)((()=>{if(f){if(""===f.message)return void g(!1);"error"!==f.type&&g(!0)}}),[f]);let v="";return f&&(v=f.detailedErrorMsg,(""===v||v&&v.length<5)&&(v=f.message)),(0,d.jsxs)(i.ngX,{onClose:t,open:n,title:c,titleIcon:m,widthLimit:h,sx:p,iconColor:x,children:[(0,d.jsx)(r.A,{isModal:!0}),(0,d.jsx)(i.qb_,{onClose:()=>{g(!1),j((0,l.h0)(""))},open:b,message:v,mode:"inline",variant:"error"===f.type?"error":"default",autoHideDuration:"error"===f.type?10:5,condensed:!0}),u]})}},81708:(e,t,n)=>{n.d(t,{Ex:()=>p,HS:()=>h,mS:()=>m,op:()=>u,oz:()=>x});var s=n(80907),o=n(56483),i=n(37414),a=n(93445),l=n(6035),r=n(64159),d=n(24241),c=n(56629);const u=(0,s.zD)("objectBrowser/downloadSelected",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:c}=t;const u=n(),h=t=>{const n=encodeURIComponent(`${e}-${t.name}-${(new Date).getTime()}-${Math.random()}`),s=(0,i.E0)(8),o=(0,a.RG)(e,t.name,t.version_id,t.size,null,s,(e=>{c((0,l.DW)({instanceID:n,progress:e}))}),(()=>{c((0,l.rx)(n))}),(e=>{c((0,l.iL)({instanceID:n,msg:e}))}),(()=>{c((0,l.Dm)(n))}),(()=>{c((0,r.Hk)("File download will be handled directly by the browser."))}));(0,i.FP)(s,o),c((0,l.cP)({ID:s,bucketName:e,done:!1,instanceID:n,percentage:0,prefix:t.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))};if(0!==u.objectBrowser.selectedObjects.length){let t=[];const n=e=>u.objectBrowser.selectedObjects.includes(e.name);if(t=u.objectBrowser.records.filter(n),1===t.length){if(t[0].name.length>200&&(0,o.oK)().toLowerCase().includes("win"))return void c((0,l.Ew)(t[0]));h(t[0])}else if(1===t.length)h(t[0]);else if(t.length>1){const n=`${d.c9.now().toFormat("LL-dd-yyyy-HH-mm-ss")}_files_list.zip`,s=t.reduce(((e,t)=>{const n=null===t||void 0===t?void 0:t.delete_flag;return t&&!n?e.push(t.name):console.log(`Skipping ${null===t||void 0===t?void 0:t.name} from download.`),e}),[]);return void await(0,a.Fj)(e,s,n)}}})),h=(0,s.zD)("objectBrowser/openPreview",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const i=n();if(1===i.objectBrowser.selectedObjects.length){let e;const t=e=>i.objectBrowser.selectedObjects.includes(e.name);e=i.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.xE)(!0)))}})),m=(0,s.zD)("objectBrowser/openShare",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const i=n();if(1===i.objectBrowser.selectedObjects.length){let e;const t=e=>i.objectBrowser.selectedObjects.includes(e.name);e=i.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.Lf)(!0)))}})),x=(0,s.zD)("objectBrowser/openAnonymousAccess",(async(e,t)=>{let{getState:n,dispatch:s}=t;const o=n();1===o.objectBrowser.selectedObjects.length&&o.objectBrowser.selectedObjects[0].endsWith("/")&&s((0,l.I8)(!0))})),p=(0,s.zD)("objectBrowser/maxShareLinkExpTime",(async(e,t)=>{let{rejectWithValue:n,dispatch:s}=t;return c.F.buckets.getMaxShareLinkExp().then((e=>{s((0,l.QV)(e.data.exp))})).catch((async e=>n(e.error)))}))},48245:(e,t,n)=>{n.d(t,{_:()=>r});var s=n(56483),o=n(37414),i=n(93445),a=n(6035),l=n(64159);const r=(e,t,n,r)=>{var d;const c=encodeURIComponent(`${t}-${r.name}-${(new Date).getTime()}-${Math.random()}`),u=(0,s.oK)().toLowerCase().includes("win");if(((null===(d=r.name)||void 0===d?void 0:d.length)||0)>200&&u)return void e((0,a.Jl)(!0));const h=(0,o.E0)(8),m=(0,i.RG)(t,n,r.version_id,r.size||0,null,h,(t=>{e((0,a.DW)({instanceID:c,progress:t}))}),(()=>{e((0,a.rx)(c))}),(t=>{e((0,a.iL)({instanceID:c,msg:t}))}),(()=>{e((0,a.Dm)(c))}),(()=>{e((0,l.Hk)("File download will be handled directly by the browser."))}));(0,o.FP)(h,m),e((0,a.cP)({ID:h,bucketName:t,done:!1,instanceID:c,percentage:0,prefix:r.name||"",type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}}}]);
-//# sourceMappingURL=182.6e133743.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/182.6e133743.chunk.js.map b/web-app/build/static/js/182.6e133743.chunk.js.map
deleted file mode 100644
index ca3cacbbd..000000000
--- a/web-app/build/static/js/182.6e133743.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/182.6e133743.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Buckets/ListBuckets/UploadPermissionUtils.ts","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.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/TagsModal.tsx","screens/Console/Tools/KeyRevealer.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/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.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/PreviewPDF.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/utils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n \n \n );\n};\n\nexport default AddAccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const extractFileExtn = (resourceStr: string) => {\n //file extensions may contain query string. so exclude query strings !\n return (resourceStr.match(/\\.([^.]*?)(?=\\?|#|$)/) || [])[1];\n};\nexport const getPolicyAllowedFileExtensions = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n scopes,\n );\n\n //get acceptable files if any in the policy.\n const allowedFileExtensions = sessionGrantWildCards.reduce(\n (acc: string[], cv: string) => {\n const extension: string = extractFileExtn(cv);\n if (extension) {\n acc.push(`.${extension}`); //strict extension matching.\n }\n return acc;\n },\n [],\n );\n\n const uniqueExtensions = [...new Set(allowedFileExtensions)];\n return uniqueExtensions.join(\",\");\n};\n\n// The resource should not have the extensions (*.ext) for the hasPermission to work.\n// so sanitize this and also use to extract the allowed extensions outside of permission check.\nexport const getSessionGrantsWildCard = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n //get only the path matching grants to reduce processing.\n const grantsWithExtension = Object.keys(sessionGrants).reduce(\n (acc: Record, grantKey: string) => {\n if (extractFileExtn(grantKey) && grantKey.includes(uploadPath)) {\n acc[grantKey] = sessionGrants[grantKey];\n }\n return acc;\n },\n {},\n );\n\n const checkPathsForPermission = (sessionGrantKey: string) => {\n const grantActions = grantsWithExtension[sessionGrantKey];\n const hasScope = grantActions.some((actionKey) =>\n scopes.find((scopeKey) => {\n let wildCardMatch = false;\n const hasWildCard = scopeKey.indexOf(\"*\") !== -1;\n if (hasWildCard) {\n const scopeActionKey = scopeKey.substring(0, scopeKey.length - 1);\n\n wildCardMatch = actionKey.includes(scopeActionKey);\n }\n\n return wildCardMatch || actionKey === scopeKey;\n }),\n );\n\n const sessionGrantKeyPath = sessionGrantKey.substring(\n 0,\n sessionGrantKey.indexOf(\"/*.\"), //start of extension part.\n );\n const isUploadPathMatching =\n sessionGrantKeyPath === `arn:aws:s3:::${uploadPath}`;\n\n const hasGrant =\n isUploadPathMatching && sessionGrantKey !== \"arn:aws:s3:::*\";\n\n return hasScope && hasGrant;\n };\n\n return Object.keys(grantsWithExtension).filter(checkPathsForPermission);\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport styled from \"styled-components\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { safeDecodeURIComponent } from \"../../../common/utils\";\nimport {\n Button,\n CopyIcon,\n NewPathIcon,\n Tooltip,\n Breadcrumbs,\n breakPoints,\n Box,\n} from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { getSessionGrantsWildCard } from \"../Buckets/ListBuckets/UploadPermissionUtils\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\"),\n ),\n);\n\nconst BreadcrumbsMain = styled.div(() => ({\n display: \"flex\",\n \"& .additionalOptions\": {\n paddingRight: \"10px\",\n display: \"flex\",\n alignItems: \"center\",\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"none\",\n },\n },\n \"& .slashSpacingStyle\": {\n margin: \"0 5px\",\n },\n}));\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n const [canCreateSubpath, setCanCreateSubpath] = useState(false);\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\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 const pathToCheckPerms = bucketName + paths || bucketName;\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathToCheckPerms,\n putObjectPermScopes,\n );\n\n useEffect(() => {\n setCanCreateSubpath(false);\n Object.keys(sessionGrants).forEach((grant) => {\n grant.includes(pathToCheckPerms) &&\n grant.includes(\"/*\") &&\n setCanCreateSubpath(true);\n });\n }, [pathToCheckPerms, internalPaths, sessionGrants]);\n\n const canCreatePath =\n hasPermission(\n [pathToCheckPerms, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) ||\n anonymousMode ||\n canCreateSubpath;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${encodeURIComponent(bucketName)}/${\n subSplit ? `${encodeURIComponent(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n \n {safeDecodeURIComponent(objectItem) /*Only for display*/}\n \n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" }),\n );\n }}\n >\n {\n safeDecodeURIComponent(\n objectItem,\n ) /*Only for display to preserve */\n }\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 if (splitPaths.length === 0) {\n navigate(\"/browser\");\n\n return;\n }\n\n const prevPath = splitPaths.slice(0, -1);\n\n navigate(\n `/browser/${bucketName}${\n prevPath.length > 0\n ? `/${encodeURIComponent(`${prevPath.join(\"/\")}/`)}`\n : \"\"\n }`,\n );\n }\n };\n\n return (\n \n \n {createFolderOpen && (\n \n )}\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 }\n >\n {listBreadcrumbs}\n \n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n \n div\": {\n fontSize: 12,\n fontWeight: \"normal\",\n flexDirection: \"row\",\n flexWrap: \"nowrap\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"flex\",\n },\n }}\n >\n {additionalOptions}\n \n \n );\n};\n\nexport default BrowserBreadcrumbs;\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 isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\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 { CSSObject } from \"styled-components\";\nimport { Button, DropdownSelector, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\nimport { getSessionGrantsWildCard } from \"./UploadPermissionUtils\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n overrideStyles?: CSSObject;\n}\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [uploadOptionsOpen, uploadOptionsSetOpen] = useState(false);\n\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n putObjectPermScopes,\n );\n\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n uploadOptionsSetOpen(!uploadOptionsOpen);\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(\n [uploadPath, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const uploadFolderAllowed = hasPermission(\n [bucketName, ...sessionGrantWildCards],\n putObjectPermScopes,\n false,\n true,\n );\n\n const uploadFolderAction = (action: string) => {\n if (action === \"folder\") {\n uploadFolderFunction(handleCloseUpload);\n return;\n }\n\n uploadFileFunction(handleCloseUpload);\n };\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n ,\n value: \"file\",\n disabled: !uploadObjectAllowed || forceDisable,\n },\n {\n label: \"Upload Folder\",\n icon: ,\n value: \"folder\",\n disabled: !uploadFolderAllowed || forceDisable,\n },\n ]}\n selectedOption={\"\"}\n onSelect={(nValue) => uploadFolderAction(nValue)}\n hideTriggerAction={() => {\n uploadOptionsSetOpen(false);\n }}\n open={uploadOptionsOpen}\n anchorEl={anchorEl}\n anchorOrigin={\"end\"}\n useAnchorWidth\n />\n \n );\n};\n\nexport default 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 { Box, Button, ClosePanelIcon } from \"mds\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n return (\n \n }\n sx={{\n position: \"absolute\",\n right: 5,\n top: 18,\n padding: 0,\n height: 14,\n \"&:hover:not(:disabled)\": {\n backgroundColor: \"transparent\",\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\n// This object contains variables that will be used across form components.\n\nimport React from \"react\";\nimport { Box } from \"mds\";\nimport { replaceUnicodeChar } from \"../../../../../../common/utils\";\n\ninterface IIconWithLabel {\n icon: React.ReactNode;\n strings: string[];\n}\n\nconst IconWithLabel = ({ icon, strings }: IIconWithLabel) => {\n return (\n \n {icon}\n \n {replaceUnicodeChar(strings[strings.length - 1])}\n \n \n );\n};\n\nexport default IconWithLabel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nconst extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false,\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n\nexport const sanitizeFilePath = (filePath: string) => {\n // Replace `./` at the start of the path or preceded by `/` - happens when drag drop upload of files (not folders !) in chrome\n return filePath.replace(/(^|\\/)\\.\\//g, \"/\");\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 } from \"react\";\nimport { Box } from \"mds\";\nimport { safeDecodeURIComponent } from \"../../../../../../common/utils\";\n\ninterface IObjectMetadata {\n metaData: any;\n}\n\nconst itemRendererFn = (element: any) => {\n return Array.isArray(element)\n ? element.map(safeDecodeURIComponent).join(\", \")\n : safeDecodeURIComponent(element);\n};\n\nconst ObjectMetaData = ({ metaData }: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = itemRendererFn(metaData[element]);\n return (\n \n {element}\n \n {renderItem}\n \n );\n })}\n \n );\n};\n\nexport default ObjectMetaData;\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) => ({\n value: (num + 1).toString(),\n label: (num + 1).toString(),\n}));\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(Array(50), (_, numYear) => ({\n value: (numYear + currentYear).toString(),\n label: (numYear + currentYear).toString(),\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 { Box, HelpIcon, InputLabel, Select, Tooltip } from \"mds\";\nimport { days, months, validDate, years } from \"./utils\";\n\ninterface IDateSelectorProps {\n id: string;\n label: string;\n disableOptions?: 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 id,\n label,\n disableOptions = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any,\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\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\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 {\n return false;\n }\n };\n\n const monthForDropDown = [{ value: \"\", label: \"\" }, ...months];\n const daysForDrop = [{ value: \"\", label: \"\" }, ...days];\n const yearsForDrop = [{ value: \"\", label: \"\" }, ...years];\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n \n \n \n );\n },\n);\n\nexport default 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\";\nimport { Box, Button, FormLayout, Grid, RadioGroup, Switch } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { BucketObject, ObjectRetentionMode } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: BucketObject;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\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(retentionConfig?.mode || ObjectRetentionMode.Governance);\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, retentionConfig?.mode]);\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(ObjectRetentionMode.Governance);\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.buckets\n .putObjectRetention(\n bucketName,\n {\n prefix: selectedObject,\n version_id: versionId || \"\",\n },\n {\n expires: expireDate,\n mode: type as ObjectRetentionMode,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null,\n ) => {\n api.buckets\n .deleteObjectRetention(bucketName, {\n prefix: selectedObject,\n version_id: versionId || \"\",\n })\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name || \"\";\n const versionId = objectInfo.version_id || null;\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 \n );\n};\n\nexport default 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 { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningResponse | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const recursive = selectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${encodeURIComponent(selectedBucket)}/objects?prefix=${encodeURIComponent(selectedObject)}${\n selectedVersion !== \"\"\n ? `&version_id=${encodeURIComponent(selectedVersion)}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete: \n {selectedObject}{\" \"}\n {selectedVersion !== \"\" ? (\n \n \n \n Version ID:\n \n {selectedVersion}\n \n ) : (\n \"\"\n )}\n ? \n \n {isVersionedMode(versioningInfo?.status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n
\n This will remove the object as well as all of its versions,{\" \"}\n \n This action is irreversible.\n
\n \n Are you sure you want to continue?\n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Button, FormLayout, Grid, Switch } from \"mds\";\nimport { BucketObject, ObjectLegalHoldStatus } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: BucketObject;\n}\n\nconst SetLegalHoldModal = ({\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.buckets\n .putObjectLegalHold(\n bucketName,\n {\n prefix: objectName,\n version_id: versionId || \"\",\n },\n {\n status: legalHoldEnabled\n ? ObjectLegalHoldStatus.Enabled\n : ObjectLegalHoldStatus.Disabled,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.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 \n );\n};\n\nexport default SetLegalHoldModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n AddNewTagIcon,\n Button,\n DisabledIcon,\n EditTagIcon,\n InputBox,\n SectionTitle,\n Box,\n Grid,\n Tag,\n FormLayout,\n} from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useSelector } from \"react-redux\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst DeleteTag = styled.b(({ theme }) => ({\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n marginLeft: 5,\n}));\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\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 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.buckets\n .putObjectTags(\n bucketName,\n { prefix: actualInfo.name || \"\", version_id: verID },\n { tags: newTagList },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.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.buckets\n .putObjectTags(\n bucketName,\n { prefix: actualInfo.name || \"\", version_id: verID },\n { tags: cleanObject },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.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 {\n onCloseAndUpdate(true);\n }}\n iconColor={deleteEnabled ? \"delete\" : \"default\"}\n titleIcon={deleteEnabled ? : }\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 onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n \n \n \n \n \n } separator={false}>\n Add New Tag\n \n \n {\n setNewKey(e.target.value);\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 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, CopyIcon, InputBox, Box, breakPoints } from \"mds\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n readOnly={true}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n Button,\n InspectMenuIcon,\n PasswordKeyIcon,\n Switch,\n Grid,\n Box,\n} from \"mds\";\nimport {\n deleteCookie,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IInspectObjectProps {\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\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 let basename = document.baseURI.replace(window.location.origin, \"\");\n const urlOfInspectApi = `${window.location.origin}${basename}/api/v1/admin/inspect?volume=${encodeURIComponent(volumeName)}&file=${encodeURIComponent(inspectPath + \"/xl.meta\")}&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 \n )}\n {decryptionKey ? (\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 ) : null}\n \n );\n};\n\nexport default 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 { Button, EditIcon, FormLayout, Grid, InputBox, Switch } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { useAppDispatch } from \"../../../store\";\nimport { downloadObject } from \"./utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: BucketObject;\n closeModal: () => void;\n}\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\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 downloadObject(dispatch, bucketName, internalPaths, actualInfo);\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 \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 get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n ActionsList,\n Box,\n Button,\n DeleteIcon,\n DownloadIcon,\n Grid,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n SimpleHeader,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject, BucketVersioningResponse } from \"api/consoleApi\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport {\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { displayFileIconName } from \"./utils\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst emptyFile: BucketObject = {\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: undefined,\n};\n\ninterface IObjectDetailPanelProps {\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningResponse;\n locking: boolean | undefined;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo,\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = 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 && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: BucketObject) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: BucketObject) => el.version_id === selectedVersion,\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: BucketObject): number => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0,\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((err) => {\n console.error(\"Error loading object details\", err.error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: internalPaths,\n versionID: actualInfo?.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata, actualInfo?.version_id]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n {selectedVersion !== \"\" && (\n \n Version ID:\n \n {selectedVersion}\n \n )}\n \n Size:\n \n {niceBytes(`${actualInfo.size || \"0\"}`)}\n \n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n \n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n \n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n \n {calculateLastModifyTime(actualInfo.last_modified || \"\")}\n \n )}\n \n ETAG:\n \n {actualInfo.etag || \"N/A\"}\n \n \n Tags:\n \n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n \n \n \n \n Legal Hold:\n \n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n \n \n \n \n \n \n Retention Policy:\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n \n \n \n {!actualInfo.is_delete_marker && (\n \n } />\n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n \n )}\n \n );\n};\n\nexport default ObjectDetailPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box, RecoverIcon } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRestoreFileVersion {\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: BucketObject;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst RestoreFileVersion = ({\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api.buckets\n .putObjectRestore(bucketName, {\n prefix: objectPath,\n version_id: versionToRestore.version_id || \"\",\n })\n .then(() => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n }),\n );\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore \n {objectPath} with Version ID:\n \n {versionToRestore.version_id}?\n \n }\n />\n );\n};\n\nexport default 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 { DateTime } from \"luxon\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n IconButton,\n Tooltip,\n Grid,\n Checkbox,\n} from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: BucketObject;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: BucketObject) => void;\n onDownload: (versionInfo: BucketObject) => void;\n onRestore: (versionInfo: BucketObject) => void;\n onPreview: (versionInfo: BucketObject) => void;\n globalClick: (versionInfo: BucketObject) => void;\n key: any;\n style: any;\n}\n\nconst FileVersionStyled = styled.div(({ theme }) => {\n return {\n \"&:before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: get(theme, \"borderColor\", \"#F8F8F8\"),\n left: \"24px\",\n },\n \"& .mainFileVersionItem\": {\n borderBottom: `${get(theme, \"borderColor\", \"#F8F8F8\")} 1px solid`,\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n },\n \"& .intermediateLayer\": {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\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 },\n \"& .buttonContainer\": {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\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 },\n \"@media (max-width: 600px)\": {\n \"& .buttonContainer\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n \"@media (max-width: 799px)\": {\n \"&:before\": {\n display: \"none\",\n },\n \"& .mainFileVersionItem\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n \"& .intermediateLayer\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n \"& .versionData\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n \"& .collapsableInfo\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n \"& .versionItem\": {\n display: \"none\",\n },\n },\n };\n});\n\nconst FileVersionItem = ({\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(\n versionInfo.last_modified,\n ) as DateTime;\n }\n\n return (\n \n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n sx={{\n width: \"initial\",\n }}\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(`${versionInfo.size || \"0\"}`)}\n \n \n \n \n \n \n );\n};\n\nexport default FileVersionItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { ConfirmDeleteIcon, Switch, Grid, InputBox } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api.buckets\n .deleteObject(selectedBucket, {\n prefix: selectedObject,\n non_current_versions: true,\n bypass: bypassGovernance,\n })\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {selectedObject}? \n {canBypass && (\n \n
\n \n )}\n \n To continue please type YES, PROCEED in the box.\n \n \n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n \n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api.buckets\n .deleteMultipleObjects(selectedBucket, selectedObjectsRequest, {\n all_versions: false,\n bypass: bypassGovernance,\n })\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n
\n )}\n \n \n );\n};\n\nexport default DaysSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n Button,\n CopyIcon,\n ReadBox,\n ShareIcon,\n Grid,\n ProgressBar,\n Tooltip,\n} from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { niceTimeFromSeconds } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { getMaxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserThunks\";\nimport { maxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserSlice\";\nimport debounce from \"lodash/debounce\";\n\ninterface IShareFileProps {\n open: boolean;\n bucketName: string;\n dataObject: BucketObject;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const maxShareLinkExpTimeVal = useSelector(maxShareLinkExpTime);\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 debouncedDateChange = debounce((newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n }, 300);\n\n useEffect(() => {\n dispatch(getMaxShareLinkExpTime());\n }, [dispatch]);\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.buckets\n .listObjects(bucketName, {\n prefix: dataObject.name || \"\",\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n\n const latestVersion: BucketObject | undefined = result.find(\n (elem: BucketObject) => elem.is_latest,\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't be retrieved, we default\n setVersionID(\"null\");\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.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.buckets\n .shareObject(bucketName, {\n prefix: dataObject.name || \"\",\n version_id: versionID,\n expires: selectedDate !== \"\" ? `${diffDate}s` : \"\",\n })\n .then((res) => {\n setShareURL(res.data);\n setIsLoadingFile(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.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 \n You can reset your session by logging out and logging back\n in to the web UI.
\n You can increase the maximum configuration time by setting\n the MINIO_STS_DURATION environment variable on all your\n nodes.
\n You can use mc share as an alternative to this UI,\n where the session length does not limit the URL validity.\n \n }\n >\n \n The following URL lets you share this object without requiring\n a login. \n The URL expires automatically at the earlier of your\n configured time ({niceTimeFromSeconds(maxShareLinkExpTimeVal)}\n ) or the expiration of your current web session.\n \n \n \n \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\"Share URL Copied to clipboard\"),\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {shareURL}\n \n \n \n )}\n \n \n );\n};\n\nexport default ShareFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport { Box, Button, InformativeMessage } from \"mds\";\n\npdfjs.GlobalWorkerOptions.workerSrc = \"./scripts/pdf.worker.min.mjs\";\n\ninterface IPreviewPDFProps {\n path: string;\n loading: boolean;\n onLoad: () => void;\n downloadFile: () => void;\n}\n\nconst PreviewPDF = ({\n path,\n loading,\n onLoad,\n downloadFile,\n}: IPreviewPDFProps) => {\n const [errorState, setErrorState] = useState(false);\n const [totalPages, setTotalPages] = useState(0);\n\n if (!path) {\n return null;\n }\n\n const renderPages = totalPages > 5 ? 5 : totalPages;\n const arrayCreate = Array.from(Array(renderPages).keys());\n\n return (\n \n {errorState && totalPages === 0 && (\n \n File preview couldn't be displayed, Please try Download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!loading && !errorState && (\n \n This is a File Preview for the first {arrayCreate.length} pages of\n the document, if you wish to work with the full document please\n download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!errorState && (\n \n {\n setTotalPages(_pdfInfo.numPages || 0);\n setErrorState(false);\n onLoad();\n }}\n onLoadError={(error) => {\n setErrorState(true);\n onLoad();\n console.error(error);\n }}\n >\n {arrayCreate.map((item) => (\n \n ))}\n \n \n )}\n \n );\n};\n\nexport default PreviewPDF;\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 { ProgressBar, Grid, Box, InformativeMessage } from \"mds\";\nimport get from \"lodash/get\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { api } from \"../../../../../../api\";\nimport PreviewPDF from \"./PreviewPDF\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n bucketName: string;\n actualInfo: BucketObject;\n isFullscreen?: boolean;\n}\n\nconst PreviewFile = ({\n bucketName,\n actualInfo,\n isFullscreen = false,\n}: IPreviewFileProps) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(true);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const objectName = actualInfo?.name || \"\";\n\n const fetchMetadata = useCallback(() => {\n if (!isMetaDataLoaded) {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: objectName,\n versionID: actualInfo.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, objectName, isMetaDataLoaded, actualInfo.version_id]);\n\n useEffect(() => {\n if (bucketName && objectName) {\n fetchMetadata();\n }\n }, [bucketName, objectName, fetchMetadata]);\n\n let path = \"\";\n\n if (actualInfo) {\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${encodeURIComponent(bucketName)}/objects/download?preview=true&prefix=${encodeURIComponent(actualInfo.name || \"\")}`;\n if (actualInfo.version_id) {\n path = path.concat(`&version_id=${actualInfo.version_id}`);\n }\n }\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {objectType !== \"none\" && loading && (\n \n \n \n )}\n {isMetaDataLoaded ? (\n \n {objectType === \"video\" && (\n \n )}\n {objectType === \"audio\" && (\n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType === \"pdf\" && (\n \n \n downloadObject(dispatch, bucketName, path, actualInfo)\n }\n />\n \n )}\n {objectType === \"none\" && (\n
\n )}\n \n ) : null}\n \n );\n};\nexport default 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 { ObjectPreviewIcon } from \"mds\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n actualInfo,\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 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 { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction,\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any, headers?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data, headers)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","// 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 { ModalBox, Snackbar } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport MainError from \"../MainError/MainError\";\n\ninterface IModalProps {\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n titleIcon?: React.ReactNode;\n iconColor?: \"default\" | \"delete\" | \"accept\";\n sx?: CSSObject;\n}\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n wideLimit = true,\n titleIcon = null,\n iconColor = \"default\",\n sx,\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 let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (message === \"\" || (message && message.length < 5)) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default 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 { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport {\n download,\n downloadSelectedAsZip,\n} from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setMaxShareLinkExpTime,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { DateTime } from \"luxon\";\nimport { api } from \"api\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURIComponent(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n 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 dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\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 if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // In case just one element is selected, then we trigger download modal validation.\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n } else {\n downloadObject(itemsToDownload[0]);\n }\n } else {\n if (itemsToDownload.length === 1) {\n downloadObject(itemsToDownload[0]);\n } else if (itemsToDownload.length > 1) {\n const fileName = `${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}_files_list.zip`;\n\n // We are enforcing zip download when multiple files are selected for better user experience\n const multiObjList = itemsToDownload.reduce((dwList: any[], bi) => {\n // Download objects/prefixes(recursively) as zip\n // Skip any deleted files selected via \"Show deleted objects\" in selection and log for debugging\n const isDeleted = bi?.delete_flag;\n if (bi && !isDeleted) {\n dwList.push(bi.name);\n } else {\n console.log(`Skipping ${bi?.name} from download.`);\n }\n return dwList;\n }, []);\n\n await downloadSelectedAsZip(bucketName, multiObjList, fileName);\n return;\n }\n }\n }\n },\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n },\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n },\n);\n\nexport const openAnonymousAccess = createAsyncThunk(\n \"objectBrowser/openAnonymousAccess\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n if (\n state.objectBrowser.selectedObjects.length === 1 &&\n state.objectBrowser.selectedObjects[0].endsWith(\"/\")\n ) {\n dispatch(setAnonymousAccessOpen(true));\n }\n },\n);\n\nexport const getMaxShareLinkExpTime = createAsyncThunk(\n \"objectBrowser/maxShareLinkExpTime\",\n async (_, { rejectWithValue, dispatch }) => {\n return api.buckets\n .getMaxShareLinkExp()\n .then((res) => {\n dispatch(setMaxShareLinkExpTime(res.data.exp));\n })\n .catch(async (res) => {\n return rejectWithValue(res.error);\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { BucketObject } from \"api/consoleApi\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: BucketObject,\n) => {\n const identityDownload = encodeURIComponent(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const isWinOs = getClientOS().toLowerCase().includes(\"win\");\n\n if ((object.name?.length || 0) > 200 && isWinOs) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n 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 dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\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"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","prefix","setPrefix","useState","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","helpTip","Fragment","helpTipPlacement","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","resetForm","trim","createProcess","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error","extractFileExtn","resourceStr","match","getSessionGrantsWildCard","sessionGrants","uploadPath","scopes","arguments","length","undefined","grantsWithExtension","Object","keys","reduce","acc","grantKey","includes","filter","sessionGrantKey","hasScope","some","actionKey","find","scopeKey","wildCardMatch","indexOf","scopeActionKey","substring","sessionGrantKeyPath","CreatePathModal","withSuspense","React","BreadcrumbsMain","styled","div","display","paddingRight","alignItems","breakPoints","lg","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","createFolderOpen","setCreateFolderOpen","canCreateSubpath","setCanCreateSubpath","putObjectPermScopes","IAM_SCOPES","S3_PUT_OBJECT","S3_PUT_ACTIONS","console","session","permissions","paths","splitPaths","split","path","lastBreadcrumbsIndex","pathToCheckPerms","sessionGrantWildCards","forEach","grant","canCreatePath","hasPermission","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURIComponent","className","style","cursor","whiteSpace","safeDecodeURIComponent","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","folderName","closeAddFolderModal","limitedSubPath","Breadcrumbs","goBackFunction","prevPath","CopyToClipboard","text","icon","CopyIcon","width","height","fill","marginTop","color","border","marginRight","Box","Tooltip","permissionTooltipHelper","NewPathIcon","marginBottom","justifyContent","fontSize","fontWeight","flexDirection","flexWrap","isVersionedMode","forceDisable","uploadFileFunction","uploadFolderFunction","overrideStyles","anchorEl","setAnchorEl","uploadOptionsOpen","uploadOptionsSetOpen","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","event","currentTarget","UploadIcon","DropdownSelector","UploadFolderIcon","selectedOption","onSelect","nValue","hideTriggerAction","open","anchorOrigin","useAnchorWidth","closePanel","borderColor","borderWidth","borderStyle","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","ClosePanelIcon","right","top","padding","backgroundColor","strings","minHeight","overflow","textOverflow","replaceUnicodeChar","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","element","returnOnlyIcon","elementString","FileNonType","endsWith","FolderBrowserIcon","lowercaseElement","toLowerCase","etc","ext","FileMissingIcon","splitItem","IconWithLabel","metaData","metaKeys","renderItem","Array","isArray","itemRendererFn","maxHeight","months","days","from","_","num","currentYear","Date","getFullYear","years","numYear","forwardRef","ref","disableOptions","borderBottom","onDateChange","useImperativeHandle","resetDate","month","setMonth","day","setDay","year","setYear","valueSplit","parseInt","isValid","dateString","validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","toISOString","isDateDisabled","monthForDropDown","daysForDrop","yearsForDrop","gap","InputLabel","htmlFor","placement","HelpIcon","newValue","closeModalAndRefresh","objectInfo","retentionConfig","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","isSaving","setIsSaving","alreadyConfigured","setAlreadyConfigured","retention_mode","mode","ObjectRetentionMode","Governance","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","current","showSwitcher","noValidate","autoComplete","onSubmit","preventDefault","Switch","checked","indicatorLabels","RadioGroup","currentValue","selectorOptions","Compliance","DateSelector","saveNewRetentionPolicy","selectedObject","versionId","version_id","addRetention","expireDate","buckets","putObjectRetention","expires","err","setModalErrorSnackMessage","disableRetention","deleteObjectRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","selectedVersion","deleteLoading","invokeDeleteApi","useApi","onDelSuccess","detailedError","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","canBypass","S3_BYPASS_GOVERNANCE_RETENTION","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","recursive","confirmationContent","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","putObjectLegalHold","ObjectLegalHoldStatus","Enabled","Disabled","DeleteTag","b","theme","_ref2","_actualInfo$name","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","allPathData","currentItem","pop","tagsFor","plural","iconColor","DisabledIcon","EditTagIcon","container","cancelDelete","deleteTagProcess","cleanObject","verID","putObjectTags","SecureComponent","S3_GET_OBJECT_TAGGING","S3_GET_ACTIONS","resource","flexFlow","tagKey","tag","S3_DELETE_OBJECT_TAGGING","errorProps","deleteIcon","onDelete","Tag","onDeleteTag","S3_PUT_OBJECT_TAGGING","SectionTitle","AddNewTagIcon","separator","addTagProcess","newTag","newTagList","shown","setShown","sm","overlayIcon","readOnly","overlayAction","navigator","clipboard","writeText","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","InspectMenuIcon","async","basename","document","baseURI","replace","window","location","origin","fetch","url","method","makeRequest","ok","resErr","json","errorMessage","message","code","blob","filename","headers","decryptKey","getCookieValue","performDownload","onCloseDecKeyModal","deleteCookie","PasswordKeyIcon","KeyRevealer","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","downloadObject","doDownload","emptyFile","is_latest","last_modified","legal_hold_status","size","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","setMetaData","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","el","is_delete_marker","listObjects","with_versions","result","data","objects","tVersionSize","currValue","resInfo","setLoadingObjectInfo","getObjectMetadata","versionID","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","S3_PUT_OBJECT_LEGAL_HOLD","canSetTags","canChangeRetention","S3_GET_OBJECT_RETENTION","S3_PUT_OBJECT_RETENTION","canInspect","ADMIN_INSPECT_DATA","canChangeVersioning","S3_GET_BUCKET_VERSIONING","S3_PUT_BUCKET_VERSIONING","S3_GET_OBJECT_VERSION","canGetObject","S3_GET_OBJECT","canDelete","S3_DELETE_OBJECT","objectType","previewObjectType","multiActionButtons","action","DownloadIcon","ShareIcon","PreviewIcon","LegalHoldIcon","openRetentionModal","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","closeShareModal","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","closeFileOpen","textTransform","ActionsList","items","DeleteIcon","iconLocation","fullWidth","SimpleHeader","ObjectInfoIcon","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","getTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","S3_GET_OBJECT_LEGAL_HOLD","MetadataIcon","ObjectMetaData","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","restoreVersion","putObjectRestore","restoreLocalObjectList","confirmButtonProps","bgColor","FileVersionStyled","content","left","borderBottomColor","maxWidth","fileName","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","now","fromISO","md","Checkbox","stopPropagation","SpecificVersionPill","button","IconButton","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","deleteObject","non_current_versions","bypass","selectedVersions","selectedObjectsRequest","deleteMultipleObjects","all_versions","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","content_type","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","ProgressBar","BrowserBreadcrumbs","ScreenTitle","subTitle","actions","SelectMultipleIcon","DeleteNonCurrentIcon","noLabelMinWidth","bottomBorder","flexGrow","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","object","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","ListObjectsTable","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","requestInProgress","features","selFeatures","obOnly","records","searchObjects","selectedObjects","connectionError","displayListObjects","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","sortASC","sortListObjects","payload","reverse","tableActions","_object$name","idElement","newPath","setSelectedObjects","setObjectDetailsView","setSelectedObjectView","sendOnlyId","customPaperHeight","DataTable","itemActions","columns","entityName","idField","targetD","elements","customEmptyMessage","sortEnabled","currentSort","currentDirection","onSortClick","sortData","newSortDirection","sortBy","setReloadObjectsList","onSelectAll","selectAllItems","rowStyle","_payload$index","delete_flag","noBackground","FilterObjectsSB","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","ListObjects","_downloadRenameModal$","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","versioningConfig","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","_state$objectBrowser","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","isMetaDataLoaded","setIsMetaDataLoaded","isVersioningApplied","pathSegment","pathname","decodeURIComponent","currentPath","i","concat","fileUpload","folderUpload","pathAsResourceInPolicy","allowedFileExtensions","cv","extension","Set","getPolicyAllowedFileExtensions","canDownload","canRewind","canUpload","canSetAnonymousAccess","S3_GET_BUCKET_POLICY","S3_PUT_BUCKET_POLICY","isSelObjectDelMarker","checkForDelMarker","isObjDelMarker","obj","fetchMetadata","useCallback","resetRewind","setAttribute","isPrefix","getBucketQuota","quotaVals","detailedMessage","setBucketDetailsLoad","setBucketInfo","getBucketRetentionConfig","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","folderPath","pathPrefix","upload","uploadPromise","file","Promise","resolve","reject","uploadUrl","blobFile","Blob","filePath","sanitizeFilePath","fileWebkitRelativePath","relativeFolderPath","ID","makeid","prefixPath","finalFolderPath","pathClean","startsWith","identity","Math","random","xhr","XMLHttpRequest","setRequestHeader","errorMessages","withCredentials","onload","completeObject","removeTrace","response","JSON","failObject","instanceID","msg","addEventListener","progress","floor","loaded","total","updateProgress","onerror","onloadend","onabort","cancelObjectInList","formData","FormData","append","storeCallForObjectWithID","setNewObject","done","percentage","waitingForFile","failed","cancelled","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","onDrop","acceptedFiles","newFolderPath","allowedFiles","fileExtn","log","getRootProps","getInputProps","isDragActive","isDragAccept","useDropzone","noClick","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","downloadToolTip","downloadSelected","openShare","openPreview","openAnonymousAccess","AccessRuleIcon","setSelectedPreview","refresh","versioning","rewindCloseModal","closePreviewWindow","closeRenameModal","setDownloadRenameModal","AddAccessRule","closeAddAccessRule","setAnonymousAccessOpen","PageLayout","paddingBottom","BucketsIcon","Badge","dotOnly","invisible","HistoryIcon","RefreshIcon","resetMessages","multiple","accept","UploadFilesButton","closeMenu","click","borderTop","VersionsNavigator","setDeletedAction","setShowDeletedObjects","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_DELETE_BUCKET","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","ADMIN_GET_BUCKET_QUOTA","ADMIN_SET_BUCKET_QUOTA","S3_PUT_BUCKET_TAGGING","S3_GET_BUCKET_TAGGING","S3_LIST_BUCKET_VERSIONS","S3_GET_BUCKET_POLICY_STATUS","S3_DELETE_BUCKET_POLICY","searchBar","setSearchVersions","setHelpName","AutoColorIcon","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","OBJECT_BROWSER_VIEW","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","SettingsIcon","HelpMenu","middleComponent","BrowserHandler","loadingVersioning","rewindDate","dateToRewind","loadingLocking","reloadObjectsList","initWSRequest","rewindMode","pathLoad","forceLoad","searchPath","setRequestInProgress","setLoadingVersioning","setLoadingLocking","getBucketVersioning","setIsVersioned","getBucketObjectLockingStatus","setLockingEnabled","object_locking_enabled","OBHeader","maxSeconds","entity","maxDays","maxHours","maxMinutes","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","calculateNewTime","hours","minutes","plus","toISO","formattedDate","valid","extraStyles","paddingLeft","min","max","LinkIcon","maxShareLinkExpTimeVal","maxShareLinkExpTime","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","debouncedDateChange","debounce","newDate","getMaxShareLinkExpTime","latestVersion","elem","slDate","currDate","diffDate","ceil","shareObject","niceTimeFromSeconds","DaysSelector","ReadBox","actionButton","setModalSnackMessage","pdfjs","workerSrc","loading","onLoad","downloadFile","errorState","setErrorState","totalPages","setTotalPages","renderPages","arrayCreate","InformativeMessage","Document","onLoadSuccess","_pdfInfo","numPages","onLoadError","Page","pageNumber","renderAnnotationLayer","renderTextLayer","renderForms","isFullscreen","setLoading","iframeLoaded","flex","autoPlay","controls","muted","playsInline","onPlay","src","alt","PreviewPDF","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","WrappedComponent","fallback","props","Suspense","onSuccess","onError","setIsLoading","callApi","invoke","openSnackbar","setOpenSnackbar","modalSnackMessage","modalSnackBar","detailedErrorMsg","ModalBox","widthLimit","MainError","isModal","Snackbar","closeSnackBar","autoHideDuration","condensed","createAsyncThunk","getState","rejectWithValue","identityDownload","downloadCall","download","itemsToDownload","filterFunction","getClientOS","multiObjList","dwList","bi","isDeleted","downloadSelectedAsZip","fileObject","findFunction","_ref3","_ref4","_ref5","getMaxShareLinkExp","setMaxShareLinkExpTime","exp","isWinOs"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/2033.a048316b.chunk.js b/web-app/build/static/js/2033.a048316b.chunk.js
deleted file mode 100644
index eda0c82b2..000000000
--- a/web-app/build/static/js/2033.a048316b.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2033],{22033:(e,t,o)=>{o.r(t),o.d(t,{default:()=>k});var a=o(65043),r=o(73216),n=o(89923),i=o(67433),l=o(77403),s=o(99161),p=o(70579);const c=()=>(0,p.jsx)(n.lVp,{iconComponent:(0,p.jsx)(n.jm5,{}),title:"What are Event Destinations?",help:(0,p.jsx)(n.azJ,{sx:{paddingTop:"20px"},children:"MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 Event Notifications."})});var d=o(48793),g=o(33097),u=o.n(g);const m=o(94574).Ay.button((e=>{let{theme:t}=e;return{background:u()(t,"boxBackground","#FFF"),border:`${u()(t,"borderColor","#E2E2E2")} 1px solid`,borderRadius:5,width:250,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,marginRight:8,cursor:"pointer",overflow:"hidden","&:hover":{backgroundColor:u()(t,"buttons.regular.hover.background","#ebebeb")},"& .imageContainer":{width:80,"& .logoButton":{maxWidth:46,maxHeight:46,filter:"drop-shadow(1px 1px 8px #fff)"}},"& .lambdaNotifTitle":{color:u()(t,"buttons.callAction.enabled.background","#07193E"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18,fontWeight:"bold"}}})),h=e=>{let{destinationType:t,srcImage:o,title:a}=e;const n=(0,r.Zp)();return(0,p.jsxs)(m,{onClick:()=>{n(`${s.zZ.EVENT_DESTINATIONS_ADD}/${t}`)},children:[(0,p.jsx)("span",{className:"imageContainer",children:(0,p.jsx)("img",{src:o,className:"logoButton",alt:a})}),(0,p.jsx)("span",{className:"lambdaNotifTitle",children:a})]})};var y=o(88617),f=o(21383),b=o(64159);const T=i.bo.filter((e=>""!==e.logo)),S=T.filter((e=>e.category===i.D3.DB)),v=T.filter((e=>e.category===i.D3.Queue)),_=T.filter((e=>e.category===i.D3.Func)),k=()=>{const e=(0,r.Zp)(),t=(0,f.jL)();return(0,a.useEffect)((()=>{t((0,b.ph)("notification_type_selector"))}),[]),(0,p.jsxs)(a.Fragment,{children:[(0,p.jsx)(d.A,{label:(0,p.jsx)(a.Fragment,{children:(0,p.jsx)(n.EGL,{label:"Event Destinations",onClick:()=>e(s.zZ.EVENT_DESTINATIONS)})}),actions:(0,p.jsx)(y.A,{})}),(0,p.jsx)(n.Mxu,{children:(0,p.jsx)(n.Hbc,{helpBox:(0,p.jsx)(c,{}),children:(0,p.jsxs)(n.azJ,{children:[(0,p.jsx)(n.azJ,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Queue"}),(0,p.jsx)(n.azJ,{sx:{...l.AF.iconContainer},children:v.map((e=>(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},`icon-${e.targetTitle}`)))}),(0,p.jsx)(n.azJ,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Database"}),(0,p.jsx)(n.azJ,{sx:{...l.AF.iconContainer},children:S.map((e=>(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},`icon-${e.targetTitle}`)))}),(0,p.jsx)(n.azJ,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Functions"}),(0,p.jsx)(n.azJ,{sx:{...l.AF.iconContainer},children:_.map((e=>(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},`icon-${e.targetTitle}`)))})]})})})]})}},67433:(e,t,o)=>{o.d(t,{AU:()=>r,D3:()=>m,Es:()=>u,P4:()=>a,Xm:()=>b,bo:()=>y,fx:()=>T,h4:()=>v});const a="notify_postgres",r="notify_mysql",n="notify_kafka",i="notify_amqp",l="notify_mqtt",s="notify_redis",p="notify_nats",c="notify_elasticsearch",d="notify_webhook",g="notify_nsq",u=e=>e.map((e=>({service_name:`${e.service}:${e.account_id}`,name:e.service,account_id:e.account_id,status:e.status})));class m{}m.DB="database",m.Queue="queue",m.Func="functions";const h=()=>`${document.baseURI}`,y=[{actionTrigger:a,targetTitle:"PostgreSQL",logo:`${h()}postgres-logo.svg`,category:m.DB},{actionTrigger:n,targetTitle:"Kafka",logo:`${h()}kafka-logo.svg`,category:m.Queue},{actionTrigger:i,targetTitle:"AMQP",logo:`${h()}amqp-logo.svg`,category:m.Queue},{actionTrigger:l,targetTitle:"MQTT",logo:`${h()}mqtt-logo.svg`,category:m.Queue},{actionTrigger:s,targetTitle:"Redis",logo:`${h()}redis-logo.svg`,category:m.Queue},{actionTrigger:p,targetTitle:"NATS",logo:`${h()}nats-logo.svg`,category:m.Queue},{actionTrigger:r,targetTitle:"Mysql",logo:`${h()}mysql-logo.svg`,category:m.DB},{actionTrigger:c,targetTitle:"Elastic Search",logo:`${h()}elasticsearch-logo.svg`,category:m.DB},{actionTrigger:d,targetTitle:"Webhook",logo:`${h()}webhooks-logo.svg`,category:m.Func},{actionTrigger:g,targetTitle:"NSQ",logo:`${h()}nsq-logo.svg`,category:m.Queue}],f=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],b=e=>e.filter((e=>""!==e.value)),T={[n]:[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"},...f],[i]:[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"},...f],[s]:[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"},...f],[l]:[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"},...f],[p]:[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"},...f],[c]:[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"},...f],[d]:[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"},...f],[g]:[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},...f]},S={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},v=e=>S[e]}}]);
-//# sourceMappingURL=2033.a048316b.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/2033.a048316b.chunk.js.map b/web-app/build/static/js/2033.a048316b.chunk.js.map
deleted file mode 100644
index 1cbc91f05..000000000
--- a/web-app/build/static/js/2033.a048316b.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2033.a048316b.chunk.js","mappings":"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AEf,CACET,KAAM,UACNhC,MAAO,UACPuC,QAAS,uDACTC,KAAM,SACNC,YAAa,0BAEZJ,GAEL,CAAClB,GAAa,CACZ,CACEa,KAAM,MACNM,UAAU,EACVtC,MAAO,MACPuC,QACE,sEACFC,KAAM,OAER,CACER,KAAM,WACNhC,MAAO,WACPuC,QAAS,4BACTC,KAAM,SACNC,YAAa,kBAEf,CACET,KAAM,gBACNhC,MAAO,gBACPuC,QAAS,qBACTC,KAAM,SACNC,YAAa,uBAEf,CACET,KAAM,cACNhC,MAAO,cACPuC,QAAS,6BACTC,KAAM,SACNC,YAAa,qBAEf,CACET,KAAM,YACNhC,MAAO,YACPuC,QACE,yEACFC,KAAM,UAER,CACER,KAAM,UACNhC,MAAO,UACPuC,QACE,0EACFC,KAAM,UAER,CACER,KAAM,UACNhC,MAAO,UACPuC,QACE,mEACFC,KAAM,UAER,CACER,KAAM,WACNhC,MAAO,WACPuC,QACE,yGACFC,KAAM,UAER,CACER,KAAM,eACNhC,MAAO,eACPuC,QACE,kEACFC,KAAM,UAER,CACER,KAAM,gBACNhC,MAAO,gBACPuC,QAAS,4DACTC,KAAM,SACNC,YAAa,0BAEZJ,GAEL,CAAChB,GAAc,CACb,CACEW,KAAM,UACNM,UAAU,EACVtC,MAAO,UACPuC,QAAS,+CACTC,KAAM,UACNC,YAAa,iBAEf,CACET,KAAM,MACNM,UAAU,EACVtC,MAAO,MACPuC,QAAS,wDACTC,KAAM,SACNC,YAAa,aAEf,CACET,KAAM,WACNhC,MAAO,WACPuC,QAAS,wBACTC,KAAM,SACNC,YAAa,qBAEZJ,GAEL,CAACjB,GAAa,CACZ,CACEY,KAAM,SACNM,UAAU,EACVtC,MAAO,SACPuC,QAAS,mDACTC,KAAM,MACNC,YAAa,iBAEf,CACET,KAAM,QACNM,UAAU,EACVtC,MAAO,QACPuC,QAAS,oCACTC,KAAM,SACNC,YAAa,eAEf,CACET,KAAM,WACNhC,MAAO,WACPuC,QAAS,gBACTC,KAAM,SACNC,YAAa,kBAEf,CACET,KAAM,WACNhC,MAAO,WACPuC,QAAS,gBACTC,KAAM,SACNC,YAAa,kBAEf,CACET,KAAM,MACNhC,MAAO,MACPuC,QAAS,uDACTC,KAAM,SACNC,YAAa,aAEf,CACET,KAAM,sBACNhC,MAAO,sBACPuC,QAAS,sDACTC,KAAM,WACNC,YAAa,6BAEf,CACET,KAAM,qBACNhC,MAAO,qBACPuC,QAAS,qDACTC,KAAM,WACNC,YAAa,+BAEZJ,GAEL,CAACf,GAAa,CACZ,CACEU,KAAM,UACNM,UAAU,EACVtC,MAAO,UACPuC,QAAS,0CACTC,KAAM,UACNC,YAAa,iBAEf,CACET,KAAM,UACNM,UAAU,EACVtC,MAAO,UACPuC,QAAS,4BACTC,KAAM,SACNC,YAAa,sBAEf,CACET,KAAM,WACNhC,MAAO,WACPuC,QAAS,gBACTC,KAAM,SACNC,YAAa,uBAEf,CACET,KAAM,WACNhC,MAAO,WACPuC,QAAS,gBACTC,KAAM,SACNC,YAAa,uBAEf,CACET,KAAM,QACNhC,MAAO,QACPuC,QAAS,aACTC,KAAM,SACNC,YAAa,oBAEf,CACET,KAAM,MACNhC,MAAO,MACPuC,QAAS,4BACTC,KAAM,UAER,CACER,KAAM,kBACNhC,MAAO,kBACPuC,QACE,mEACFC,KAAM,UAER,CACER,KAAM,gBACNhC,MAAO,gBACPuC,QAAS,gEACTC,KAAM,WACNC,YAAa,uBAEf,CACET,KAAM,YACNhC,MAAO,YACPuC,QAAS,2CACTC,KAAM,UAER,CACER,KAAM,kBACNhC,MAAO,kBACPuC,QAAS,6CACTC,KAAM,UAER,CACER,KAAM,mCACNhC,MAAO,uCACPuC,QAAS,yDACTC,KAAM,SACNC,YAAa,mCAEf,CACET,KAAM,uBACNhC,MAAO,uBACPuC,QAAS,uCACTC,KAAM,SACNC,YAAa,8BAEf,CACET,KAAM,iBACNhC,MAAO,iBACPuC,QAAS,sDACTC,KAAM,SACNC,YAAa,wBAEf,CACET,KAAM,cACNhC,MAAO,cACPuC,QAAS,iCACTC,KAAM,SACNC,YAAa,qBAEf,CACET,KAAM,aACNhC,MAAO,aACPuC,QAAS,8CACTC,KAAM,SACNC,YAAa,uBAEZJ,GAEL,CAACd,GAAsB,CACrB,CACES,KAAM,MACNM,UAAU,EACVtC,MAAO,MACPuC,QACE,oEACFC,KAAM,MACNC,YAAa,aAEf,CACET,KAAM,QACNM,UAAU,EACVtC,MAAO,QACPuC,QACE,oEACFC,KAAM,SACNC,YAAa,eAEf,CACET,KAAM,SACNM,UAAU,EACVtC,MAAO,SACPuC,QACE,gIACFC,KAAM,OACNC,YAAa,mBAEZJ,GAEL,CAACb,GAAiB,CAChB,CACEQ,KAAM,WACNM,UAAU,EACVtC,MAAO,WACPuC,QACE,kEACFC,KAAM,MACNC,YAAa,kBAEf,CACET,KAAM,aACNhC,MAAO,aACPuC,QAAS,2CACTC,KAAM,SACNC,YAAa,uBAEZJ,GAEL,CAACZ,GAAY,CACX,CACEO,KAAM,eACNM,UAAU,EACVtC,MAAO,eACPuC,QAAS,2CACTC,KAAM,UACNC,YAAa,sBAEf,CACET,KAAM,QACNM,UAAU,EACVtC,MAAO,QACPuC,QAAS,YACTC,KAAM,SACNC,YAAa,eAEf,CACET,KAAM,MACNhC,MAAO,MACPuC,QAAS,4BACTC,KAAM,UAER,CACER,KAAM,kBACNhC,MAAO,kBACPuC,QACE,mEACFC,KAAM,aAELH,IAIDU,EAA6C,CACjDC,QAAS,iBACTC,KAAM,cACNC,MAAO,eACPC,KAAM,cACNC,KAAM,cACNC,IAAK,aACLC,MAAO,eACPC,WAAY,kBACZC,cAAe,uBACfC,MAAO,gBAGIC,EAA4BC,GAChCZ,EAAmBY,E","sources":["screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx","screens/Console/EventDestinations/DestinationButton.tsx","screens/Console/EventDestinations/EventTypeSelector.tsx","screens/Console/EventDestinations/utils.ts"],"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 .\nimport React from \"react\";\n\nimport { HelpBox, LambdaNotificationsIcon, Box } from \"mds\";\n\nconst NotificationEndpointTypeSelectorHelpBox = () => {\n return (\n }\n title={\"What are Event Destinations?\"}\n help={\n \n MinIO bucket notifications allow administrators to send notifications\n to supported external services on certain object or bucket events.\n MinIO supports bucket and object-level S3 events similar to the Amazon\n S3 Event Notifications.\n \n }\n />\n );\n};\n\nexport default NotificationEndpointTypeSelectorHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\n\ninterface IDestinationButton {\n destinationType: string;\n srcImage: string;\n title: string;\n}\n\nconst DestinationButtonBase = styled.button(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#FFF\"),\n border: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n borderRadius: 5,\n width: 250,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n marginRight: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: get(theme, \"buttons.regular.hover.background\", \"#ebebeb\"),\n },\n \"& .imageContainer\": {\n width: 80,\n \"& .logoButton\": {\n maxWidth: 46,\n maxHeight: 46,\n filter: \"drop-shadow(1px 1px 8px #fff)\",\n },\n },\n \"& .lambdaNotifTitle\": {\n color: get(theme, \"buttons.callAction.enabled.background\", \"#07193E\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n fontWeight: \"bold\",\n },\n}));\n\nconst DestinationButton = ({\n destinationType,\n srcImage,\n title,\n}: IDestinationButton) => {\n const navigate = useNavigate();\n\n return (\n {\n navigate(`${IAM_PAGES.EVENT_DESTINATIONS_ADD}/${destinationType}`);\n }}\n >\n \n \n \n {title}\n \n );\n};\n\nexport default DestinationButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BackLink, Box, FormLayout, PageLayout } from \"mds\";\nimport { destinationList, DestType } from \"./utils\";\nimport { typesSelection } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport NotificationEndpointTypeSelectorHelpBox from \"../Account/NotificationEndpointTypeSelectorHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport DestinationButton from \"./DestinationButton\";\n\nimport HelpMenu from \"../HelpMenu\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setHelpName } from \"../../../systemSlice\";\n\nconst withLogos = destinationList.filter((elService) => elService.logo !== \"\");\nconst database = withLogos.filter(\n (elService) => elService.category === DestType.DB,\n);\nconst queue = withLogos.filter(\n (elService) => elService.category === DestType.Queue,\n);\nconst functions = withLogos.filter(\n (elService) => elService.category === DestType.Func,\n);\n\nconst EventTypeSelector = () => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"notification_type_selector\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n \n navigate(IAM_PAGES.EVENT_DESTINATIONS)}\n />\n \n }\n actions={}\n />\n \n }>\n \n \n Queue\n \n \n {queue.map((item) => {\n return (\n \n );\n })}\n \n \n Database\n \n \n {database.map((item) => {\n return (\n \n );\n })}\n \n \n Functions\n \n \n {functions.map((item) => {\n return (\n \n );\n })}\n \n \n \n \n \n );\n};\n\nexport default EventTypeSelector;\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 { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nconst notifyKafka = \"notify_kafka\";\nconst notifyAmqp = \"notify_amqp\";\nconst notifyMqtt = \"notify_mqtt\";\nconst notifyRedis = \"notify_redis\";\nconst notifyNats = \"notify_nats\";\nconst notifyElasticsearch = \"notify_elasticsearch\";\nconst notifyWebhooks = \"notify_webhook\";\nconst notifyNsq = \"notify_nsq\";\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nconst getImgBaseURL = () => {\n return `${document.baseURI}`;\n};\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: `${getImgBaseURL()}postgres-logo.svg`,\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: `${getImgBaseURL()}kafka-logo.svg`,\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: `${getImgBaseURL()}amqp-logo.svg`,\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: `${getImgBaseURL()}mqtt-logo.svg`,\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: `${getImgBaseURL()}redis-logo.svg`,\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: `${getImgBaseURL()}nats-logo.svg`,\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: `${getImgBaseURL()}mysql-logo.svg`,\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: `${getImgBaseURL()}elasticsearch-logo.svg`,\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: `${getImgBaseURL()}webhooks-logo.svg`,\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: `${getImgBaseURL()}nsq-logo.svg`,\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from api/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n"],"names":["NotificationEndpointTypeSelectorHelpBox","_jsx","HelpBox","iconComponent","LambdaNotificationsIcon","title","help","Box","sx","paddingTop","children","DestinationButtonBase","styled","button","_ref","theme","background","get","border","borderRadius","width","height","display","alignItems","justifyContent","marginBottom","marginRight","cursor","overflow","backgroundColor","maxWidth","maxHeight","filter","color","fontSize","fontFamily","paddingLeft","fontWeight","_ref2","destinationType","srcImage","navigate","useNavigate","_jsxs","onClick","IAM_PAGES","EVENT_DESTINATIONS_ADD","className","src","alt","withLogos","destinationList","elService","logo","database","category","DestType","DB","queue","Queue","functions","Func","EventTypeSelector","dispatch","useAppDispatch","useEffect","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","EVENT_DESTINATIONS","actions","HelpMenu","PageLayout","FormLayout","helpBox","paddingBottom","typesSelection","iconContainer","map","item","DestinationButton","actionTrigger","targetTitle","notifyPostgres","notifyMysql","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationTransform","notificationElements","element","service_name","service","account_id","name","status","getImgBaseURL","document","baseURI","commonFields","required","tooltip","type","placeholder","removeEmptyFields","formFields","field","value","notificationEndpointsFields","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","getNotificationConfigKey","serviceName"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/2138.a8c39913.chunk.js b/web-app/build/static/js/2138.a8c39913.chunk.js
deleted file mode 100644
index a91bf1c42..000000000
--- a/web-app/build/static/js/2138.a8c39913.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2138],{48967:(e,i,t)=>{t.d(i,{A:()=>p});var r=t(65043),s=t(56629),n=t(53518),l=t(58661),a=t(89923),o=t(64159),d=t(21383),c=t(70579);const p=e=>{let{configurationName:i,closeResetModalAndRefresh:t,resetOpen:p}=e;const x=(0,d.jL)(),[u,h]=(0,r.useState)(!1);(0,r.useEffect)((()=>{u&&s.F.configs.resetConfig(i).then((()=>{h(!1),t(!0)})).catch((e=>{h(!1),x((0,o.C9)((0,n.S)(e.error)))}))}),[t,i,u,x]);return(0,c.jsx)(l.A,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:p,titleIcon:(0,c.jsx)(a.xWY,{}),isLoading:u,onConfirm:()=>{h(!0)},onClose:()=>{t(!1)},confirmationContent:(0,c.jsxs)(r.Fragment,{children:[u&&(0,c.jsx)(a.z21,{}),(0,c.jsxs)(r.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,c.jsx)("br",{}),(0,c.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}},38392:(e,i,t)=>{t.d(i,{A:()=>a});var r=t(65043),s=t(89923),n=t(70579);const l=e=>{let{icon:i,description:t}=e;return(0,n.jsxs)(s.azJ,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[i," ",(0,n.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},a=e=>{let{helpText:i,docLink:t,docText:a,contents:o}=e;return(0,n.jsxs)(s.azJ,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,n.jsxs)(s.azJ,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,n.jsx)(s.nag,{}),(0,n.jsx)("div",{children:i})]}),(0,n.jsxs)(s.azJ,{sx:{fontSize:"14px",marginBottom:"15px"},children:[o.map(((e,i)=>(0,n.jsxs)(r.Fragment,{children:[e.icon&&(0,n.jsx)(s.azJ,{sx:{paddingBottom:"20px"},children:(0,n.jsx)(l,{icon:e.icon,description:e.iconDescription})}),(0,n.jsx)(s.azJ,{sx:{paddingBottom:"20px"},children:e.text})]},`feature-item-${i}`))),(0,n.jsx)(s.azJ,{sx:{paddingBottom:"20px"},children:(0,n.jsx)("a",{href:t,target:"_blank",rel:"noopener",children:a})})]})]})}},2138:(e,i,t)=>{t.r(i),t.d(i,{default:()=>D});var r=t(65043),s=t(89923),n=t(56629),l=t(53518),a=t(21383),o=t(64159),d=t(42349),c=t(48793),p=t(38392),x=t(22166),u=t(24241),h=t(70579);const m=e=>{let{name:i}=e;return(0,h.jsxs)("h4",{children:[(0,h.jsx)(s.FUY,{style:{transform:"rotateZ(90deg)"}}),i]})},g=e=>{let{blockName:i,results:t}=e;return(0,h.jsxs)(r.Fragment,{children:[(0,h.jsxs)("strong",{children:[i,":"]}),(0,h.jsx)("ul",{children:t.map(((e,t)=>(0,h.jsx)("li",{children:e},`policy-${i}-${t}`)))})]})},f=e=>{var i,t,n,l,a,o;let{entityName:d,results:c}=e,p=0;switch(d){case"Group":p=(null===(i=c.groups)||void 0===i?void 0:i.length)||0;break;case"Policy":p=(null===(t=c.policies)||void 0===t?void 0:t.length)||0;break;case"User":p=(null===(n=c.users)||void 0===n?void 0:n.length)||0}return(0,h.jsxs)(s.azJ,{className:"resultElement",sx:{marginTop:50,"&:first-of-type":{marginTop:0}},children:[(0,h.jsxs)(s._xt,{separator:!0,sx:{fontSize:12},icon:(0,h.jsx)(s.Xk0,{style:{width:17,height:17}}),actions:(0,h.jsxs)(s.azJ,{sx:{fontSize:14},children:[(0,h.jsx)("strong",{children:p})," Entit",1===p?"y":"ies"," Found"]}),children:[d," Mappings"]}),(0,h.jsxs)(s.azJ,{className:"resultsList",sx:{h4:{borderBottom:"#e2e2e2 1px solid",padding:"12px 0",margin:0,marginBottom:15,display:"flex",alignItems:"center","& svg":{marginRight:10,fill:"#3C77A7"}}},children:["Group"===d&&(null===(l=c.groups)||void 0===l?void 0:l.map(((e,i)=>(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(m,{name:e.group||""}),e.policies&&(0,h.jsx)(g,{blockName:"Policies",results:e.policies})]},`policy-res-${i}`)))),"User"===d&&(null===(a=c.users)||void 0===a?void 0:a.map(((e,i)=>(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(m,{name:e.user||""}),e.policies&&(0,h.jsx)(g,{blockName:"Policies",results:e.policies})]},`users-res-${i}`)))),"Policy"===d&&(null===(o=c.policies)||void 0===o?void 0:o.map(((e,i)=>(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(m,{name:e.policy||""}),e.groups&&(0,h.jsx)(g,{blockName:"Groups",results:e.groups}),e.users&&(0,h.jsx)(g,{blockName:"Users",results:e.users})]},`policy-map-${i}`))))]})]})};var y=t(42967);const j=()=>{const e=(0,a.jL)(),[i,t]=(0,r.useState)(!1),[d,c]=(0,r.useState)([""]),[p,m]=(0,r.useState)([""]),[g,j]=(0,r.useState)(null),b=(0,x.d4)((e=>e.createUser.selectedPolicies));return(0,h.jsxs)(s.azJ,{sx:{marginTop:15,paddingTop:0},children:[(0,h.jsxs)(s.xA9,{container:!0,sx:{marginTop:5},children:[(0,h.jsxs)(s.xA9,{item:!0,sm:12,md:6,lg:5,sx:{padding:10,paddingTop:0},children:[(0,h.jsx)(s._xt,{children:"Query Filters"}),(0,h.jsxs)(s.azJ,{sx:{padding:"0 10px",display:"flex",flexDirection:"column",gap:40},children:[(0,h.jsxs)(s.azJ,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,h.jsx)(s.azJ,{sx:{display:"flex"},children:(0,h.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Users"})}),(0,h.jsx)(s.azJ,{sx:{overflowY:"auto",minHeight:50,maxHeight:250,"& > div > div":{width:"100%"}},children:d.map(((e,i)=>(0,h.jsx)(s.cl_,{id:`search-user-${i}`,value:e,onChange:e=>{const t=[...d];t[i]=e.target.value,c(t)},overlayIcon:d.length===i+1?(0,h.jsx)(s.REV,{}):(0,h.jsx)(s.YPx,{}),overlayAction:()=>{((e,i)=>{if(e){const e=[...d,""];return void c(e)}const t=d.filter(((e,t)=>t!==i));c(t)})(d.length===i+1,i)}},`search-user-${i}`)))})]}),(0,h.jsxs)(s.azJ,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,h.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Groups"}),(0,h.jsx)(s.azJ,{sx:{overflowY:"auto",minHeight:50,maxHeight:"calc(100vh - 340px)","& > div > div":{width:"100%"}},children:p.map(((e,i)=>(0,h.jsx)(s.cl_,{id:`search-group-${i}`,value:e,onChange:e=>{const t=[...p];t[i]=e.target.value,m(t)},overlayIcon:p.length===i+1?(0,h.jsx)(s.REV,{}):(0,h.jsx)(s.YPx,{}),overlayAction:()=>{((e,i)=>{if(e){const e=[...p,""];return void m(e)}const t=p.filter(((e,t)=>t!==i));m(t)})(p.length===i+1,i)}},`search-group-${i}`)))})]}),(0,h.jsxs)(s.azJ,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,h.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Policies"}),(0,h.jsx)(s.azJ,{sx:{minHeight:265,maxHeight:"calc(100vh - 740px)"},children:(0,h.jsx)(y.A,{selectedPolicy:b,noTitle:!0})})]})]})]}),(0,h.jsx)(s.xA9,{item:!0,sm:12,md:6,lg:7,sx:{padding:10,paddingTop:0,display:"flex",flexDirection:"column"},children:i?(0,h.jsx)(s.azJ,{sx:{textAlign:"center"},children:(0,h.jsx)(s.aHM,{})}):(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(s._xt,{actions:(0,h.jsx)(s.azJ,{sx:{display:"flex",flexDirection:"row",alignItems:"center",fontSize:14},children:null!==g&&void 0!==g&&g.timestamp?(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(s.b1c,{style:{width:14,height:14,marginRight:5,fill:"#BEBFBF"}}),u.c9.fromISO(g.timestamp).toFormat("D HH:mm:ss")]}):""}),children:"Query Results"}),g?(0,h.jsxs)(s.azJ,{sx:{backgroundColor:"#FBFAFA",padding:"8px 22px",flexGrow:1,overflowY:"auto"},children:[!g.groups&&!g.users&&!g.policies&&(0,h.jsx)(s.azJ,{sx:{textAlign:"center"},children:(0,h.jsx)("h4",{children:"No Results Available"})}),!!g.groups&&(0,h.jsx)(f,{results:g,entityName:"Group"}),!!g.users&&(0,h.jsx)(f,{results:g,entityName:"User"}),!!g.policies&&(0,h.jsx)(f,{results:g,entityName:"Policy"})]}):(0,h.jsx)(s.azJ,{sx:{textAlign:"center"},children:"No query results yet"})]})})]}),(0,h.jsx)(s.xA9,{container:!0,children:(0,h.jsx)(s.xA9,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-start",marginTop:45,padding:"0 20px"},children:(0,h.jsx)(s.$nd,{id:"search-entity",type:"button",variant:"callAction",onClick:()=>{t(!0);let i={},r=b.filter((e=>""!==e)),s=d.filter((e=>""!==e)),a=p.filter((e=>""!==e));r.length>0&&(i.policies=r),s.length>0&&(i.users=s),a.length>0&&(i.groups=a),n.F.ldapEntities.getLdapEntities(i).then((e=>{j(e.data),t(!1)})).catch((i=>{e((0,o.C9)((0,l.S)(i.error))),t(!1)}))},icon:(0,h.jsx)(s.WIv,{}),children:"Search"})})})]})};var b=t(48967),v=t(88617);const C=["server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter"],D=()=>{const e=(0,a.jL)(),i=d.Lq,[t,x]=(0,r.useState)(!0),[u,m]=(0,r.useState)(!1),[g,f]=(0,r.useState)(!1),[y,D]=(0,r.useState)({}),[_,A]=(0,r.useState)({}),[k,S]=(0,r.useState)(void 0),[w,P]=(0,r.useState)(!1),[E,I]=(0,r.useState)(!1),[O,z]=(0,r.useState)("configuration"),[L,F]=(0,r.useState)(!1),N=()=>{w&&k&&q(k),P(!w)},q=e=>{let i={},t={};if(e&&e.length>0){const r=e.find((e=>"enable"===e.key));let s=0,n=0;e.forEach((e=>{e.env_override?(i[e.key]=e.env_override.value,t[e.key]=e.env_override.name):i[e.key]=e.value,C.includes(e.key)&&(e.value&&""!==e.value&&"off"!==e.value||e.env_override&&""!==e.env_override.value&&"off"!==e.env_override.value)&&s++,C.includes(e.key)&&e.env_override&&n++}));const l=0!==s;l&&(r&&"off"!==r.value||!r)?m(!0):m(!1),0!==n&&F(!0),f(l)}A(t),D(i)};(0,r.useEffect)((()=>{t&&n.F.configs.configInfo("identity_ldap").then((e=>{e.data.length>0&&(S(e.data[0].key_values),q(e.data[0].key_values||[])),x(!1)})).catch((i=>{x(!1),e((0,o.C9)((0,l.S)(i.error)))}))}),[e,t]);return(0,r.useEffect)((()=>{e((0,o.ph)("LDAP"))}),[]),(0,h.jsxs)(s.xA9,{item:!0,xs:12,children:[E&&(0,h.jsx)(b.A,{configurationName:"identity_ldap",closeResetModalAndRefresh:async i=>{I(!1),i&&(e((0,o.YR)(i)),S(void 0),D({}),m(!1),f(!1),P(!1))},resetOpen:E}),(0,h.jsx)(c.A,{label:"LDAP",actions:(0,h.jsx)(v.A,{})}),(0,h.jsx)(s.Mxu,{variant:"constrained",children:(0,h.jsx)(s.tUM,{horizontal:!0,options:[{tabConfig:{id:"configuration",label:"Configuration"},content:(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(s.lcx,{icon:null,title:w?"Edit Configuration":"",actions:w?null:(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(s.m_M,{tooltip:L?"Configuration cannot be edited in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,h.jsx)(s.$nd,{id:"edit",type:"button",variant:"callAction",icon:(0,h.jsx)(s.qUP,{}),onClick:N,label:"Edit Configuration",disabled:t||L})}),g&&(0,h.jsx)(s.m_M,{tooltip:L?"Configuration cannot be disabled / enabled in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,h.jsx)(s.$nd,{id:"is-configuration-enabled",onClick:()=>(i=>{const t={key_values:[{key:"enable",value:i?"on":"off"}]};n.F.configs.setConfig("identity_ldap",t).then((i=>{m(!u),e((0,o.YR)(i.data.restart||!1)),i.data.restart||e((0,o.Hk)("Configuration saved successfully"))})).catch((i=>{e((0,o.C9)((0,l.S)(i.error)))}))})(!u),label:u?"Disable LDAP":"Enable LDAP",variant:u?"secondary":"regular",disabled:L})}),(0,h.jsx)(s.$nd,{id:"refresh-idp-config",onClick:()=>x(!0),label:"Refresh",icon:(0,h.jsx)(s.fNY,{})})]})}),(0,h.jsx)("br",{}),t?(0,h.jsx)(s.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:10},children:(0,h.jsx)(s.aHM,{})}):(0,h.jsx)(r.Fragment,{children:w?(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(s.Hbc,{helpBox:(0,h.jsx)(p.A,{helpText:"Learn more about LDAP Configurations",contents:d.iT,docLink:"https://min.io/docs/minio/linux/operations/external-iam.html?ref=con#minio-external-iam-ad-ldap",docText:"Learn more about LDAP Configurations"}),children:[w&&g?(0,h.jsx)(s.azJ,{sx:{marginBottom:15},children:(0,h.jsx)(s.lVp,{title:(0,h.jsx)(s.azJ,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:"Lookup Bind Password must be re-entered to change LDAP configurations"}),iconComponent:(0,h.jsx)(s.cJw,{}),help:null})}):null,Object.entries(i).map((e=>{let[i,t]=e;return((e,i)=>"toggle"===i.type?(0,h.jsx)(s.dOG,{indicatorLabels:["Enabled","Disabled"],checked:"on"===y[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:i.label,tooltip:i.tooltip,onChange:i=>D({...y,[e]:i.target.checked?"on":"off"}),description:"",disabled:!w},e):(0,h.jsx)(s.cl_,{id:e,required:i.required,name:e,label:i.label,tooltip:i.tooltip,error:i.hasError(y[e],w),value:y[e]?y[e]:"",onChange:i=>D({...y,[e]:i.target.value}),placeholder:i.placeholder,disabled:!w,type:i.type},e))(i,t)})),(0,h.jsxs)(s.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[w&&g&&(0,h.jsx)(s.$nd,{id:"clear",type:"button",variant:"secondary",onClick:()=>I(!0),label:"Reset Configuration"}),(0,h.jsx)(s.$nd,{id:"cancel",type:"button",variant:"regular",onClick:N,label:"Cancel"}),(0,h.jsx)(s.$nd,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:t||!(()=>{for(const[e,t]of Object.entries(i))if(t.required&&(void 0===y[e]||null===y[e]||""===y[e]))return!1;return!0})(),label:"Save",onClick:()=>{const t=Object.keys(i).map((e=>({key:e,value:y[e]})));n.F.configs.setConfig("identity_ldap",{key_values:t}).then((i=>{P(!1),S(t),q(t),e((0,o.YR)(i.data.restart||!1)),D({...y,lookup_bind_password:""}),i.data.restart||e((0,o.Hk)("Configuration saved successfully"))})).catch((i=>{e((0,o.C9)((0,l.S)(i.error)))}))}})]})]})}):(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(s.azJ,{sx:{display:"grid",gridTemplateColumns:"1fr",gridAutoFlow:"dense",gap:3,padding:"15px",border:"1px solid #eaeaea","@media (min-width: 576px)":{gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row"}},children:[(0,h.jsx)(s.mZW,{label:"LDAP Enabled",value:u?"Yes":"No"}),g&&(0,h.jsx)(r.Fragment,{children:Object.entries(i).map((e=>{let[i,t]=e;if(!t.editOnly){let e=t.label,r=y[i]?y[i]:"";return _[i]&&(e=(0,h.jsxs)(s.azJ,{sx:{display:"flex",alignItems:"center",gap:5,"& .min-icon":{height:20,width:20},"& span":{height:20,display:"flex",alignItems:"center"}},children:[(0,h.jsx)("span",{children:t.label}),(0,h.jsx)(s.m_M,{tooltip:`This value is set from the ${_[i]} environment variable`,placement:"right",children:(0,h.jsx)("span",{className:"muted",children:(0,h.jsx)(s.D0K,{})})})]}),r=(0,h.jsx)("i",{children:(0,h.jsx)("span",{className:"muted",children:r})})),(0,h.jsx)(s.mZW,{label:e,value:r},i)}return null}))})]})})})]})},{tabConfig:{id:"entities",label:"Entities",disabled:!g||!u},content:(0,h.jsx)(r.Fragment,{children:g&&(0,h.jsx)(s.azJ,{children:(0,h.jsx)(j,{})})})}],currentTabOrPath:O,onTabClick:e=>{z(e),P(!1)}})})]})}},42349:(e,i,t)=>{t.d(i,{G5:()=>l,Lq:()=>o,Vb:()=>a,iT:()=>n});var r=t(89923),s=t(70579);const n=[{text:"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.",icon:(0,s.jsx)(r.Tir,{}),iconDescription:"Create Configurations"},{text:"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries",icon:null,iconDescription:""},{text:"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.",icon:null,iconDescription:""}],l=[{text:"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.",icon:(0,s.jsx)(r.XAi,{}),iconDescription:"Create Configurations"},{text:"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.",icon:null,iconDescription:""}],a={config_url:{required:!0,hasError:(e,i)=>!e&&i?"Config URL is required":"",label:"Config URL",tooltip:"Config URL for identity provider configuration",placeholder:"https://identity-provider-url/.well-known/openid-configuration",type:"text",editOnly:!1},client_id:{required:!0,hasError:(e,i)=>!e&&i?"Client ID is required":"",label:"Client ID",tooltip:"Identity provider Client ID",placeholder:"Enter Client ID",type:"text",editOnly:!1},client_secret:{required:!0,hasError:(e,i)=>!e&&i?"Client Secret is required":"",label:"Client Secret",tooltip:"Identity provider Client Secret",placeholder:"Enter Client Secret",type:"password",editOnly:!0},claim_name:{required:!1,label:"Claim Name",tooltip:"Claim from which MinIO will read the policy or role to use",placeholder:"Enter Claim Name",type:"text",hasError:(e,i)=>"",editOnly:!1},display_name:{required:!1,label:"Display Name",tooltip:"",placeholder:"Enter Display Name",type:"text",hasError:(e,i)=>"",editOnly:!1},claim_prefix:{required:!1,label:"Claim Prefix",tooltip:"",placeholder:"Enter Claim Prefix",type:"text",hasError:(e,i)=>"",editOnly:!1},scopes:{required:!1,label:"Scopes",tooltip:"",placeholder:"openid,profile,email",type:"text",hasError:(e,i)=>"",editOnly:!1},redirect_uri:{required:!1,label:"Redirect URI",tooltip:"",placeholder:"https://console-endpoint-url/oauth_callback",type:"text",hasError:(e,i)=>"",editOnly:!1},role_policy:{required:!1,label:"Role Policy",tooltip:"",placeholder:"readonly",type:"text",hasError:(e,i)=>"",editOnly:!1},claim_userinfo:{required:!1,label:"Claim User Info",tooltip:"",placeholder:"Claim User Info",type:"toggle",hasError:(e,i)=>"",editOnly:!1},redirect_uri_dynamic:{required:!1,label:"Redirect URI Dynamic",tooltip:"",placeholder:"Redirect URI Dynamic",type:"toggle",hasError:(e,i)=>"",editOnly:!1}},o={server_insecure:{required:!0,hasError:(e,i)=>!e&&i?"Server Address is required":"",label:"Server Insecure",tooltip:"Disable SSL certificate verification ",placeholder:"myldapserver.com:636",type:"toggle",editOnly:!1},server_addr:{required:!0,hasError:(e,i)=>!e&&i?"Server Address is required":"",label:"Server Address",tooltip:'AD/LDAP server address e.g. "myldapserver.com:636"',placeholder:"myldapserver.com:636",type:"text",editOnly:!1},lookup_bind_dn:{required:!0,hasError:(e,i)=>!e&&i?"Lookup Bind DN is required":"",label:"Lookup Bind DN",tooltip:"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups",placeholder:"cn=admin,dc=min,dc=io",type:"text",editOnly:!1},lookup_bind_password:{required:!0,hasError:(e,i)=>!e&&i?"Lookup Bind Password is required":"",label:"Lookup Bind Password",tooltip:"Password for LDAP read-only service account used to perform DN and group lookups",placeholder:"admin",type:"password",editOnly:!0},user_dn_search_base_dn:{required:!0,hasError:(e,i)=>!e&&i?"User DN Search Base DN is required":"",label:"User DN Search Base",tooltip:"",placeholder:"DC=example,DC=net",type:"text",editOnly:!1},user_dn_search_filter:{required:!0,hasError:(e,i)=>!e&&i?"User DN Search Filter is required":"",label:"User DN Search Filter",tooltip:"",placeholder:"(sAMAccountName=%s)",type:"text",editOnly:!1},group_search_base_dn:{required:!1,hasError:(e,i)=>"",label:"Group Search Base DN",tooltip:"",placeholder:"ou=swengg,dc=min,dc=io",type:"text",editOnly:!1},group_search_filter:{required:!1,hasError:(e,i)=>"",label:"Group Search Filter",tooltip:"",placeholder:"(&(objectclass=groupofnames)(member=%d))",type:"text",editOnly:!1}}},42967:(e,i,t)=>{t.d(i,{A:()=>u});var r=t(65043),s=t(89923),n=t(8185),l=t(64681),a=t(64159),o=t(21383),d=t(62560),c=t(22166),p=t(56629),x=t(70579);const u=e=>{let{noTitle:i=!1}=e;const t=(0,o.jL)(),[u,h]=(0,r.useState)([]),[m,g]=(0,r.useState)(!1),[f,y]=(0,r.useState)(""),j=(0,c.d4)((e=>e.createUser.selectedPolicies)),b=(0,r.useCallback)((()=>{g(!0),p.F.policies.listPolicies().then((e=>{var i;const t=null!==(i=e.data.policies)&&void 0!==i?i:[];g(!1),h(t.sort(n.Hw))})).catch((e=>{g(!1),t((0,a.Dy)(e))}))}),[t]);(0,r.useEffect)((()=>{g(!0)}),[]),(0,r.useEffect)((()=>{m&&b()}),[m,b]);const v=u.filter((e=>e.name.includes(f)));return(0,x.jsxs)(s.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(s.z21,{}),u.length>0?(0,x.jsxs)(r.Fragment,{children:[(0,x.jsx)(s.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(l.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{y(e)},value:f,label:i?"":"Assign Policies"})}),(0,x.jsx)(s.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const i=e.target,r=i.value,s=i.checked;let n=[...j];s?n.push(r):n=n.filter((e=>e!==r)),n=n.filter((e=>""!==e)),t((0,d.Gy)(n))},selectedItems:j,isLoading:m,records:v,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(s.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},8185:(e,i,t)=>{t.d(i,{Hw:()=>s,LA:()=>r,SO:()=>n,rY:()=>l});const r=(e,i)=>{if(e.accessKey&&i.accessKey){if(e.accessKey>i.accessKey)return 1;if(e.accessKeye.name>i.name?1:e.namee>i?1:ee.policy>i.policy?1:e.policy.\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n \n \n Please note that this may cause your system to not be accessible\n \n \n \n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, CollapseCaret, GroupsMenuIcon, SectionTitle } from \"mds\";\nimport { LdapEntities } from \"api/consoleApi\";\n\ninterface IResultBlock {\n entityName: \"Group\" | \"User\" | \"Policy\";\n results: LdapEntities;\n}\n\ninterface IEntityResultName {\n name: string;\n}\n\ninterface IEntityResultItem {\n blockName: \"Policies\" | \"Groups\" | \"Users\";\n results: string[];\n}\n\nconst EntityResultTitle = ({ name }: IEntityResultName) => {\n return (\n
\n \n \n \n );\n};\n\nexport default LDAPEntitiesQuery;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n ConsoleIcon,\n EditIcon,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n Loader,\n PageLayout,\n RefreshIcon,\n Switch,\n Tabs,\n Tooltip,\n ValuePair,\n WarnIcon,\n ScreenTitle,\n} from \"mds\";\nimport { api } from \"api\";\nimport { ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../../store\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ldapFormFields, ldapHelpBoxContents } from \"../utils\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport AddIDPConfigurationHelpBox from \"../AddIDPConfigurationHelpbox\";\nimport LDAPEntitiesQuery from \"./LDAPEntitiesQuery\";\nimport ResetConfigurationModal from \"../../EventDestinations/CustomForms/ResetConfigurationModal\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst enabledConfigLDAP = [\n \"server_addr\",\n \"lookup_bind_dn\",\n \"user_dn_search_base_dn\",\n \"user_dn_search_filter\",\n];\n\nconst IDPLDAPConfigurationDetails = () => {\n const dispatch = useAppDispatch();\n\n const formFields = ldapFormFields;\n\n const [loading, setLoading] = useState(true);\n const [isEnabled, setIsEnabled] = useState(false);\n const [hasConfiguration, setHasConfiguration] = useState(false);\n const [fields, setFields] = useState({});\n const [overrideFields, setOverrideFields] = useState({});\n const [record, setRecord] = useState(\n undefined,\n );\n const [editMode, setEditMode] = useState(false);\n const [resetOpen, setResetOpen] = useState(false);\n const [curTab, setCurTab] = useState(\"configuration\");\n const [envOverride, setEnvOverride] = useState(false);\n\n const toggleEditMode = () => {\n if (editMode && record) {\n parseFields(record);\n }\n setEditMode(!editMode);\n };\n\n const parseFields = (record: ConfigurationKV[]) => {\n let fields: any = {};\n let ovrFlds: any = {};\n if (record && record.length > 0) {\n const enabled = record.find((item: any) => item.key === \"enable\");\n\n let totalCoincidences = 0;\n let totalOverride = 0;\n\n record.forEach((item: any) => {\n if (item.env_override) {\n fields[item.key] = item.env_override.value;\n ovrFlds[item.key] = item.env_override.name;\n } else {\n fields[item.key] = item.value;\n }\n\n if (\n enabledConfigLDAP.includes(item.key) &&\n ((item.value && item.value !== \"\" && item.value !== \"off\") ||\n (item.env_override &&\n item.env_override.value !== \"\" &&\n item.env_override.value !== \"off\"))\n ) {\n totalCoincidences++;\n }\n\n if (enabledConfigLDAP.includes(item.key) && item.env_override) {\n totalOverride++;\n }\n });\n\n const hasConfig = totalCoincidences !== 0;\n\n if (hasConfig && ((enabled && enabled.value !== \"off\") || !enabled)) {\n setIsEnabled(true);\n } else {\n setIsEnabled(false);\n }\n\n if (totalOverride !== 0) {\n setEnvOverride(true);\n }\n\n setHasConfiguration(hasConfig);\n }\n setOverrideFields(ovrFlds);\n setFields(fields);\n };\n\n useEffect(() => {\n const loadRecord = () => {\n api.configs\n .configInfo(\"identity_ldap\")\n .then((res) => {\n if (res.data.length > 0) {\n setRecord(res.data[0].key_values);\n parseFields(res.data[0].key_values || []);\n }\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n if (loading) {\n loadRecord();\n }\n }, [dispatch, loading]);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(formFields)) {\n if (\n value.required &&\n !(\n fields[key] !== undefined &&\n fields[key] !== null &&\n fields[key] !== \"\"\n )\n ) {\n return false;\n }\n }\n return true;\n };\n\n const saveRecord = () => {\n const keyVals = Object.keys(formFields).map((key) => {\n return {\n key,\n value: fields[key],\n };\n });\n\n api.configs\n .setConfig(\"identity_ldap\", {\n key_values: keyVals,\n })\n .then((res) => {\n setEditMode(false);\n setRecord(keyVals);\n parseFields(keyVals);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n setFields({ ...fields, lookup_bind_password: \"\" });\n\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setResetOpen(false);\n\n if (refresh) {\n dispatch(setServerNeedsRestart(refresh));\n setRecord(undefined);\n setFields({});\n setIsEnabled(false);\n setHasConfiguration(false);\n setEditMode(false);\n }\n };\n\n const toggleConfiguration = (value: boolean) => {\n const payload = {\n key_values: [\n {\n key: \"enable\",\n value: value ? \"on\" : \"off\",\n },\n ],\n };\n\n api.configs\n .setConfig(\"identity_ldap\", payload)\n .then((res) => {\n setIsEnabled(!isEnabled);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const renderFormField = (key: string, value: any) => {\n switch (value.type) {\n case \"toggle\":\n return (\n \n setFields({ ...fields, [key]: e.target.checked ? \"on\" : \"off\" })\n }\n description=\"\"\n disabled={!editMode}\n />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n disabled={!editMode}\n type={value.type}\n />\n );\n }\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"LDAP\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {resetOpen && (\n \n )}\n } />\n \n \n \n \n }\n onClick={toggleEditMode}\n label={\"Edit Configuration\"}\n disabled={loading || envOverride}\n />\n \n {hasConfiguration && (\n \n toggleConfiguration(!isEnabled)}\n label={\n isEnabled ? \"Disable LDAP\" : \"Enable LDAP\"\n }\n variant={isEnabled ? \"secondary\" : \"regular\"}\n disabled={envOverride}\n />\n \n )}\n setLoading(true)}\n label={\"Refresh\"}\n icon={}\n />\n \n ) : null\n }\n />\n \n {loading ? (\n \n \n \n ) : (\n \n {editMode ? (\n \n \n }\n >\n {editMode && hasConfiguration ? (\n \n \n Lookup Bind Password must be re-entered to\n change LDAP configurations\n \n }\n iconComponent={}\n help={null}\n />\n \n ) : null}\n {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && hasConfiguration && (\n setResetOpen(true)}\n label={\"Reset Configuration\"}\n />\n )}\n \n \n \n \n \n ) : (\n \n \n \n {hasConfiguration && (\n \n {Object.entries(formFields).map(\n ([key, value]) => {\n if (!value.editOnly) {\n let label: React.ReactNode = value.label;\n let val: React.ReactNode = fields[key]\n ? fields[key]\n : \"\";\n\n if (overrideFields[key]) {\n label = (\n \n {value.label}\n \n \n \n \n \n \n );\n\n val = (\n \n \n {val}\n \n \n );\n }\n return (\n \n );\n }\n return null;\n },\n )}\n \n )}\n \n \n )}\n \n )}\n \n ),\n },\n {\n tabConfig: {\n id: \"entities\",\n label: \"Entities\",\n disabled: !hasConfiguration || !isEnabled,\n },\n content: (\n \n {hasConfiguration && (\n \n \n \n )}\n \n ),\n },\n ]}\n currentTabOrPath={curTab}\n onTabClick={(newTab) => {\n setCurTab(newTab);\n setEditMode(false);\n }}\n />\n \n \n );\n};\n\nexport default IDPLDAPConfigurationDetails;\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 { LockIcon, LoginIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n editOnly: false,\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n editOnly: false,\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n editOnly: true,\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAccountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\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, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\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 // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","configurationName","closeResetModalAndRefresh","resetOpen","dispatch","useAppDispatch","resetLoading","setResetLoading","useState","useEffect","api","configs","resetConfig","then","catch","err","setErrorSnackMessage","errorToHandler","error","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","resetConfiguration","onClose","confirmationContent","_jsxs","Fragment","children","ProgressBar","style","maxWidth","whiteSpace","wordWrap","FeatureItem","icon","description","Box","sx","display","marginRight","height","width","marginBottom","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","iconDescription","text","href","target","rel","EntityResultTitle","name","CollapseCaret","transform","EntityResultItems","blockName","results","res","_ref3","_results$groups","_results$policies","_results$users","_results$groups2","_results$users2","_results$policies2","entityName","entityLength","groups","length","policies","users","className","marginTop","SectionTitle","separator","GroupsMenuIcon","actions","h4","borderBottom","margin","fill","groupData","group","user","policy","LDAPEntitiesQuery","loading","setLoading","setUsers","setGroups","setResults","selectedPolicies","useSelector","state","createUser","paddingTop","Grid","container","item","sm","md","lg","flexDirection","gap","withBorders","overflowY","minHeight","maxHeight","userDat","InputBox","id","value","onChange","e","usersElements","overlayIcon","AddIcon","RemoveIcon","overlayAction","alterUsersList","addItem","alterUsers","filteredUsers","filter","_","indx","groupDat","groupsElements","alterGroupsList","alterGroups","filteredGroups","PolicySelectors","selectedPolicy","noTitle","textAlign","Loader","timestamp","TimeIcon","DateTime","fromISO","toFormat","backgroundColor","flexGrow","LDAPResultsBlock","xs","justifyContent","Button","type","variant","onClick","searchEntities","data","cleanPolicies","pol","cleanUsers","usr","cleanGroups","grp","ldapEntities","getLdapEntities","result","SearchIcon","enabledConfigLDAP","IDPLDAPConfigurationDetails","formFields","ldapFormFields","isEnabled","setIsEnabled","hasConfiguration","setHasConfiguration","fields","setFields","overrideFields","setOverrideFields","record","setRecord","undefined","editMode","setEditMode","setResetOpen","curTab","setCurTab","envOverride","setEnvOverride","toggleEditMode","parseFields","ovrFlds","enabled","find","key","totalCoincidences","totalOverride","forEach","env_override","includes","hasConfig","configInfo","key_values","setHelpName","ResetConfigurationModal","async","refresh","setServerNeedsRestart","PageHeaderWrapper","label","HelpMenu","PageLayout","Tabs","horizontal","options","tabConfig","ScreenTitle","Tooltip","tooltip","EditIcon","disabled","payload","setConfig","restart","setSnackBarMessage","toggleConfiguration","RefreshIcon","FormLayout","helpBox","AddIDPConfigurationHelpBox","ldapHelpBoxContents","HelpBox","iconComponent","WarnIcon","help","Object","entries","renderFormField","Switch","indicatorLabels","checked","required","hasError","placeholder","validSave","saveRecord","keyVals","keys","lookup_bind_password","gridTemplateColumns","gridAutoFlow","ValuePair","editOnly","val","placement","ConsoleIcon","currentTabOrPath","onTabClick","newTab","LoginIcon","openIDHelpBoxContents","LockIcon","openIDFormFields","config_url","s","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","server_insecure","server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","records","setRecords","setFilter","currentPolicies","fetchPolicies","useCallback","listPolicies","_res$data$policies","sort","policySort","setModalErrorSnackMessage","filteredRecords","elementItem","SearchBox","DataTable","columns","elementKey","onSelect","targetD","elements","push","element","setSelectedPolicies","selectedItems","idField","customPaperHeight","usersSort","a","b","accessKey","stringSort","policyDetailsSort"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/2209.3b0ca7fa.chunk.js b/web-app/build/static/js/2209.3b0ca7fa.chunk.js
deleted file mode 100644
index 0f61a8d82..000000000
--- a/web-app/build/static/js/2209.3b0ca7fa.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2209],{72237:(e,n,s)=>{s.d(n,{A:()=>a});var t=s(65043),l=s(70579);const a=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(s){return(0,l.jsx)(t.Suspense,{fallback:n,children:(0,l.jsx)(e,{...s})})}}},12209:(e,n,s)=>{s.r(n),s.d(n,{default:()=>r});var t=s(65043),l=s(73216),a=s(39808),h=s(72237),c=s(70579);const p=(0,h.A)(t.lazy((()=>s.e(985).then(s.bind(s,10985))))),u=(0,h.A)(t.lazy((()=>s.e(1370).then(s.bind(s,81370))))),r=()=>(0,c.jsxs)(l.BV,{children:[(0,c.jsx)(l.qh,{path:"/",element:(0,c.jsx)(p,{})}),(0,c.jsx)(l.qh,{path:":policyName",element:(0,c.jsx)(u,{})}),(0,c.jsx)(l.qh,{element:(0,c.jsx)(a.A,{})})]})}}]);
-//# sourceMappingURL=2209.3b0ca7fa.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/2209.3b0ca7fa.chunk.js.map b/web-app/build/static/js/2209.3b0ca7fa.chunk.js.map
deleted file mode 100644
index 5d2596a2f..000000000
--- a/web-app/build/static/js/2209.3b0ca7fa.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2209.3b0ca7fa.chunk.js","mappings":"8IAiCA,QAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,EAAgB,IAAMK,KAG7B,CAGF,C,2GCtBA,MAAMI,GAAeC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,IAAM,kCAC7CC,GAAgBF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,IAAM,mCAYpD,EAViBE,KAEbC,EAAAA,EAAAA,MAACC,EAAAA,GAAM,CAAAP,SAAA,EACLF,EAAAA,EAAAA,KAACU,EAAAA,GAAK,CAACC,KAAM,IAAKC,SAASZ,EAAAA,EAAAA,KAACG,EAAY,OACxCH,EAAAA,EAAAA,KAACU,EAAAA,GAAK,CAACC,KAAM,cAAeC,SAASZ,EAAAA,EAAAA,KAACM,EAAa,OACnDN,EAAAA,EAAAA,KAACU,EAAAA,GAAK,CAACE,SAASZ,EAAAA,EAAAA,KAACa,EAAAA,EAAY,Q","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Policies/Policies.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, { 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","// 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 { Route, Routes } from \"react-router-dom\";\n\nimport NotFoundPage from \"../../NotFoundPage\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nconst ListPolicies = withSuspense(React.lazy(() => import(\"./ListPolicies\")));\nconst PolicyDetails = withSuspense(React.lazy(() => import(\"./PolicyDetails\")));\n\nconst Policies = () => {\n return (\n \n } />\n } />\n } />\n \n );\n};\n\nexport default Policies;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","ListPolicies","withSuspense","React","PolicyDetails","Policies","_jsxs","Routes","Route","path","element","NotFoundPage"],"sourceRoot":""}
\ No newline at end of file
diff --git a/web-app/build/static/js/2372.6b4933ca.chunk.js b/web-app/build/static/js/2372.6b4933ca.chunk.js
deleted file mode 100644
index 472c9c34c..000000000
--- a/web-app/build/static/js/2372.6b4933ca.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2372],{71102:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(65043),i=n(89923),a=n(70579);const l=e=>{let{timeStart:t,setTimeStart:n,timeEnd:l,setTimeEnd:o,triggerSync:r,label:c="Filter:",startLabel:d="Start Time:",endLabel:m="End Time:"}=e;return(0,a.jsx)(i.xA9,{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,a.jsxs)(i.azJ,{sx:{display:"grid",height:40,alignItems:"center",gridTemplateColumns:"auto 2fr auto",padding:0,[`@media (max-width: ${i.nmC.sm}px)`]:{padding:5},[`@media (max-width: ${i.nmC.md}px)`]:{gridTemplateColumns:"1fr",height:"auto"},gap:"5px"},children:[(0,a.jsx)(i.azJ,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},className:"muted",children:c}),(0,a.jsxs)(i.azJ,{customBorderPadding:"0px",sx:{display:"grid",height:40,alignItems:"center",gridTemplateColumns:"1fr 1fr",gap:"8px",paddingLeft:"8px",paddingRight:"8px",[`@media (max-width: ${i.nmC.md}px)`]:{height:"auto",gridTemplateColumns:"1fr"}},children:[(0,a.jsx)(i.e8j,{value:t,onChange:n,id:"stTime",secondsSelector:!1,pickerStartComponent:(0,a.jsxs)(s.Fragment,{children:[(0,a.jsx)(i.b1c,{}),(0,a.jsx)("span",{children:d})]})}),(0,a.jsx)(i.e8j,{value:l,onChange:o,id:"endTime",secondsSelector:!1,pickerStartComponent:(0,a.jsxs)(s.Fragment,{children:[(0,a.jsx)(i.b1c,{}),(0,a.jsx)("span",{children:m})]})})]}),r&&(0,a.jsx)(i.azJ,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end"},children:(0,a.jsx)(i.$nd,{id:"sync",type:"button",variant:"callAction",onClick:r,icon:(0,a.jsx)(i.Fjq,{}),label:"Sync"})})]})})}},94141:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(65043),i=n(22166),a=n(89923),l=n(21383),o=n(64159),r=n(49555),c=n(70579);const d=e=>{let{onClose:t,modalOpen:n,title:d,children:m,wideLimit:u=!0,titleIcon:x=null,iconColor:p="default",sx:h}=e;const g=(0,l.jL)(),[j,b]=(0,s.useState)(!1),f=(0,i.d4)((e=>e.system.modalSnackBar));(0,s.useEffect)((()=>{g((0,o.h0)(""))}),[g]),(0,s.useEffect)((()=>{if(f){if(""===f.message)return void b(!1);"error"!==f.type&&b(!0)}}),[f]);let _="";return f&&(_=f.detailedErrorMsg,(""===_||_&&_.length<5)&&(_=f.message)),(0,c.jsxs)(a.ngX,{onClose:t,open:n,title:d,titleIcon:x,widthLimit:u,sx:h,iconColor:p,children:[(0,c.jsx)(r.A,{isModal:!0}),(0,c.jsx)(a.qb_,{onClose:()=>{b(!1),g((0,o.h0)(""))},open:j,message:_,mode:"inline",variant:"error"===f.type?"error":"default",autoHideDuration:"error"===f.type?10:5,condensed:!0}),m]})}},52372:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});var s=n(65043),i=n(33097),a=n.n(i),l=n(22166),o=n(89923),r=n(56483);const c={time:"Timestamp",api_name:"API Name",access_key:"Access Key",bucket:"Bucket",object:"Object",remote_host:"Remote Host",request_id:"Request ID",user_agent:"User Agent",response_status:"Response Status",response_status_code:"Response Status Code",request_content_length:"Request Content Length",response_content_length:"Response Content Length",time_to_response_ns:"Time to Response NS"};var d=n(99161),m=n(64159),u=n(46537),x=n(21383),p=n(77938),h=n(20649),g=n(70579);const j=e=>{let{label:t,onChange:n,value:i,placeholder:a="",id:l,name:r}=e;return(0,g.jsx)(s.Fragment,{children:(0,g.jsxs)(o.azJ,{sx:{flexGrow:1,margin:"0 15px"},children:[(0,g.jsx)(o.l1Y,{children:t}),(0,g.jsx)(o.cl_,{placeholder:a,id:l,name:r,label:"",onChange:e=>{n(e.target.value)},sx:{"& input":{height:30}},value:i})]})})};var b=n(94141);const f=e=>{let{modalOpen:t,logSearchElement:n,onClose:i}=e;const l=Object.keys(n);return(0,g.jsx)(s.Fragment,{children:(0,g.jsx)(b.A,{modalOpen:t,title:"Full Log Information",onClose:()=>{i()},children:(0,g.jsxs)(o.xA9,{container:!0,children:[(0,g.jsx)(o.xA9,{item:!0,xs:12,children:(0,g.jsx)("table",{children:(0,g.jsx)("tbody",{children:l.map(((e,t)=>(0,g.jsxs)("tr",{children:[(0,g.jsx)("th",{style:{fontWeight:700,paddingRight:"10px",textAlign:"left"},children:a()(c,e,`${e}`)}),(0,g.jsx)("td",{children:a()(n,e,"")})]},`logSearch-${t.toString()}`)))})})}),(0,g.jsx)(o.xA9,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,g.jsx)(o.$nd,{id:"close-log-search",variant:"callAction",color:"primary",onClick:i,label:"Close"})})]})})})};var _=n(71102);const C=e=>{let{iconComponent:t,entity:n,documentationLink:i}=e;return(0,g.jsx)(o.xA9,{container:!0,sx:{justifyContent:"center",alignContent:"center",alignItems:"center"},children:(0,g.jsx)(o.xA9,{item:!0,xs:8,children:(0,g.jsx)(o.lVp,{title:`${n} not available`,iconComponent:t,help:(0,g.jsxs)(s.Fragment,{children:["This feature is not available.",(0,g.jsx)("br",{}),"Please configure"," ",(0,g.jsx)("a",{href:i,target:"_blank",rel:"noopener",children:n})," ","first to use this feature."]})})})})};var y=n(48793),S=n(88617);const k={display:"flex",justifyContent:"space-between",marginBottom:12},A=()=>{const e=(0,x.jL)(),t=(0,l.d4)(u.s$),[n,i]=(0,s.useState)(!0),[b,A]=(0,s.useState)(null),[v,$]=(0,s.useState)(null),[w,E]=(0,s.useState)(!1),[T,F]=(0,s.useState)([]),[I,L]=(0,s.useState)(""),[q,R]=(0,s.useState)(""),[z,K]=(0,s.useState)(""),[O,J]=(0,s.useState)(""),[B,M]=(0,s.useState)(""),[D,N]=(0,s.useState)(""),[P,H]=(0,s.useState)(""),[W,U]=(0,s.useState)("DESC"),[G,Y]=(0,s.useState)(["time","api_name","access_key","bucket","object","remote_host","request_id","user_agent","response_status"]),[V,Q]=(0,s.useState)(0),[X,Z]=(0,s.useState)(!1),[ee,te]=(0,s.useState)(!1),[ne,se]=(0,s.useState)(null);let ie=null;const ae=t&&t.includes("log-search"),le=(0,s.useCallback)((()=>{if(!X&&ae){Z(!0);let t=`${""!==I?`&fp=bucket:${I}`:""}${""!==B?`&fp=object:${B}`:""}${""!==q?`&fp=api_name:${q}`:""}${""!==z?`&fp=access_key:${z}`:""}${""!==D?`&fp=request_id:${D}`:""}${""!==O?`&fp=user_agent:${O}`:""}${""!==P?`&fp=response_status:${P}`:""}`;t=t.trim(),t.endsWith(",")&&(t=t.slice(0,-1)),h.A.invoke("GET",`/api/v1/logs/search?q=reqinfo${""!==t?`${t}`:""}&pageSize=100&pageNo=${V}&order=${"DESC"===W?"timeDesc":"timeAsc"}${null!==b?`&timeStart=${b.toUTC().toISO()}`:""}${null!==v?`&timeEnd=${v.toUTC().toISO()}`:""}`).then((e=>{const t=e.results||[];i(!1),Z(!1),F(t),Q(V+1),null!==ie&&ie()})).catch((t=>{i(!1),Z(!1),e((0,m.C9)(t))}))}else i(!1),Z(!1)}),[X,ae,I,B,q,z,D,O,P,V,W,b,v,ie,e]);(0,s.useEffect)((()=>{n&&(F([]),le())}),[n,W,le]);return(0,s.useEffect)((()=>{e((0,m.ph)("audit_logs"))}),[]),(0,g.jsxs)(s.Fragment,{children:[ee&&null!==ne&&(0,g.jsx)(f,{logSearchElement:ne,modalOpen:ee,onClose:()=>{se(null),te(!1)}}),(0,g.jsx)(y.A,{label:"Audit Logs",actions:(0,g.jsx)(S.A,{})}),(0,g.jsx)(o.Mxu,{children:ae?(0,g.jsxs)(s.Fragment,{children:[" ",(0,g.jsxs)(o.azJ,{withBorders:!0,sx:{marginBottom:15},children:[(0,g.jsxs)(o.xA9,{item:!0,xs:12,sx:{display:"flex",padding:15,[`@media (max-width: ${o.nmC.lg}px)`]:{flexFlow:"column"}},children:[(0,g.jsx)(o.azJ,{children:(0,g.jsx)(_.A,{setTimeEnd:e=>$(e),setTimeStart:e=>A(e),timeEnd:v,timeStart:b})}),(0,g.jsx)(o.azJ,{sx:{display:"flex",alignItems:"center"},children:(0,g.jsx)(o.J2w,{label:(w?"Hide":"Show")+" advanced Filters",open:w,onClick:()=>{E(!w)}})})]}),(0,g.jsxs)(o.xA9,{item:!0,xs:12,sx:{display:w?"block":"none",overflowY:"hidden",marginBottom:w?12:0},children:[(0,g.jsxs)(o.azJ,{sx:{marginLeft:15,marginBottom:15,fontSize:12,color:"#9C9C9C"},children:["Enable your preferred options to get filtered records.",(0,g.jsx)("br",{}),"You can use '*' to match any character, '.' to signify a single character or '\\' to scape an special character (E.g. mybucket-*)"]}),(0,g.jsxs)(o.azJ,{sx:k,children:[(0,g.jsx)(j,{onChange:L,value:I,label:"Bucket",id:"bucket",name:"bucket"}),(0,g.jsx)(j,{onChange:R,value:q,label:"API Name",id:"api_name",name:"api_name"}),(0,g.jsx)(j,{onChange:K,value:z,label:"Access Key",id:"access_key",name:"access_key"}),(0,g.jsx)(j,{onChange:J,value:O,label:"User Agent",id:"user_agent",name:"user_agent"})]}),(0,g.jsxs)(o.azJ,{sx:k,children:[(0,g.jsx)(j,{onChange:M,value:B,label:"Object",id:"object",name:"object"}),(0,g.jsx)(j,{onChange:N,value:D,label:"Request ID",id:"request_id",name:"request_id"}),(0,g.jsx)(j,{onChange:H,value:P,label:"Response Status",id:"response_status",name:"response_status"})]})]}),(0,g.jsx)(o.xA9,{item:!0,xs:12,sx:{marginBottom:15,padding:"0 15px 0 15px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:(0,g.jsx)(o.$nd,{id:"get-information",type:"button",variant:"callAction",onClick:()=>{Q(0),i(!0)},label:"Get Information"})})]}),(0,g.jsx)(o.xA9,{item:!0,xs:12,children:(0,g.jsx)(p.R,{scopes:[d.OV.ADMIN_HEALTH_INFO],resource:d.Ms,errorProps:{disabled:!0},children:(0,g.jsx)(o.bQt,{columns:[{label:c.time,elementKey:"time",enableSort:!0},{label:c.api_name,elementKey:"api_name"},{label:c.access_key,elementKey:"access_key"},{label:c.bucket,elementKey:"bucket"},{label:c.object,elementKey:"object"},{label:c.remote_host,elementKey:"remote_host"},{label:c.request_id,elementKey:"request_id"},{label:c.user_agent,elementKey:"user_agent"},{label:c.response_status,elementKey:"response_status",renderFunction:e=>(0,g.jsx)(s.Fragment,{children:(0,g.jsxs)("span",{children:[e.response_status_code," (",e.response_status,")"]})}),renderFullObject:!0},{label:c.request_content_length,elementKey:"request_content_length",renderFunction:r.nO},{label:c.response_content_length,elementKey:"response_content_length",renderFunction:r.nO},{label:c.time_to_response_ns,elementKey:"time_to_response_ns",renderFunction:r.Wi,contentTextAlign:"right"}],isLoading:n,records:T,entityName:"Logs",customEmptyMessage:"There is no information with this criteria",idField:"request_id",columnsSelector:!0,columnsShown:G,onColumnChange:e=>{let t;t=G.findIndex((t=>t===e))>=0?G.filter((t=>t!==e)):[...G,e],Y(t)},customPaperHeight:w?"calc(100vh - 520px)":"calc(100vh - 320px)",sortEnabled:{currentSort:"time",currentDirection:W,onSortClick:e=>{const t=a()(e,"sortDirection","DESC");U(t),Q(0),i(!0)}},infiniteScrollConfig:{recordsCount:1e6,loadMoreRecords:e=>(le(),new Promise((e=>{ie=e})))},itemActions:[{type:"view",onClick:e=>{se(e),te(!0)}}],textSelectable:!0})})})]}):(0,g.jsx)(C,{entity:"Audit Logs",iconComponent:(0,g.jsx)(o.WIv,{}),documentationLink:"https://min.io/docs/minio/windows/operations/monitoring/minio-logging.html?ref=con"})})]})}}}]);
-//# sourceMappingURL=2372.6b4933ca.chunk.js.map
\ No newline at end of file
diff --git a/web-app/build/static/js/2372.6b4933ca.chunk.js.map b/web-app/build/static/js/2372.6b4933ca.chunk.js.map
deleted file mode 100644
index cc87fe791..000000000
--- a/web-app/build/static/js/2372.6b4933ca.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2372.6b4933ca.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Logs/LogSearch/utils.ts","screens/Console/Common/FormComponents/FilterInputWrapper/FilterInputWrapper.tsx","screens/Console/Logs/LogSearch/LogSearchFullModal.tsx","screens/Console/Common/MissingIntegration/MissingIntegration.tsx","screens/Console/Logs/LogSearch/LogsSearchMain.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, { Fragment } from \"react\";\nimport {\n Button,\n SyncIcon,\n Grid,\n Box,\n breakPoints,\n TimeIcon,\n DateTimeInput,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n {startLabel}\n \n }\n />\n \n \n {endLabel}\n \n }\n />\n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { ModalBox, Snackbar } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport MainError from \"../MainError/MainError\";\n\ninterface IModalProps {\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n titleIcon?: React.ReactNode;\n iconColor?: \"default\" | \"delete\" | \"accept\";\n sx?: CSSObject;\n}\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n wideLimit = true,\n titleIcon = null,\n iconColor = \"default\",\n sx,\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 let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (message === \"\" || (message && message.length < 5)) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n \n \n {children}\n \n );\n};\n\nexport default ModalWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const LogSearchColumnLabels = {\n time: \"Timestamp\",\n api_name: \"API Name\",\n access_key: \"Access Key\",\n bucket: \"Bucket\",\n object: \"Object\",\n remote_host: \"Remote Host\",\n request_id: \"Request ID\",\n user_agent: \"User Agent\",\n response_status: \"Response Status\",\n response_status_code: \"Response Status Code\",\n request_content_length: \"Request Content Length\",\n response_content_length: \"Response Content Length\",\n time_to_response_ns: \"Time to Response NS\",\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 { InputBox, InputLabel, Box } from \"mds\";\n\ninterface IFilterInputWrapper {\n value: string;\n onChange: (txtVar: string) => any;\n label: string;\n placeholder?: string;\n id: string;\n name: string;\n}\n\nconst FilterInputWrapper = ({\n label,\n onChange,\n value,\n placeholder = \"\",\n id,\n name,\n}: IFilterInputWrapper) => {\n return (\n \n \n {label}\n {\n onChange(val.target.value);\n }}\n sx={{\n \"& input\": {\n height: 30,\n },\n }}\n value={value}\n />\n \n \n );\n};\n\nexport default FilterInputWrapper;\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 { Button, Grid } from \"mds\";\nimport get from \"lodash/get\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IReqInfoSearchResults } from \"./types\";\nimport { LogSearchColumnLabels } from \"./utils\";\n\ninterface ILogSearchFullModal {\n modalOpen: boolean;\n logSearchElement: IReqInfoSearchResults;\n onClose: () => void;\n}\n\nconst LogSearchFullModal = ({\n modalOpen,\n logSearchElement,\n onClose,\n}: ILogSearchFullModal) => {\n const jsonItems = Object.keys(logSearchElement);\n\n return (\n \n {\n onClose();\n }}\n >\n \n \n
\n )}\n \n \n );\n};\n\nexport default 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 { Box } from \"mds\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\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 LineChartTooltip;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Box, breakPoints, Grid, Loader } from \"mds\";\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 { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\n\ninterface ILinearGraphWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\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 LinearGraphMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\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: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: 12,\n [`@media (max-width: ${breakPoints.md}px)`]: {\n display: \"none\",\n },\n },\n \"& .loadingAlign\": {\n width: 40,\n height: 40,\n textAlign: \"center\",\n margin: \"15px auto\",\n },\n}));\n\nconst LinearGraphWidget = ({\n title,\n timeStart,\n timeEnd,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string, var1: boolean, var2: boolean) => item,\n zoomActivated = false,\n}: ILinearGraphWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [hover, setHover] = useState(false);\n const [data, setData] = useState