\n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n }\n />\n \n \n \n );\n};\n\nexport default withStyles(styles)(ConfigurationOptions);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, 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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...deleteDialogStyles,\n });\n\ninterface IResetConfiguration {\n classes: any;\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n classes,\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.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 withStyles(styles)(ResetConfigurationModal);\n"],"names":["StyledSwitch","withStyles","theme","root","width","height","padding","margin","switchBase","transform","color","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","checked","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","createStyles","_objectSpread","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","_ref","_ref$label","label","onChange","value","id","name","_ref$checked","_ref$disabled","disabled","_ref$switchOnly","switchOnly","_ref$tooltip","_ref$description","description","classes","indicatorLabels","_ref$extraInputProps","extraInputProps","switchComponent","_jsxs","React","children","_jsx","className","clsx","_defineProperty","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","Grid","container","item","xs","sm","md","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","textAlign","Typography","component","useStyles","makeStyles","headerBarIcon","marginRight","primary","main","headerBarSubheader","maxWidth","stContainer","borderBottom","flexFlow","titleColumn","leftItems","rightItems","icon","subTitle","actions","concat","style","tabStripStyle","minHeight","tabsContainer","tabsHeaderContainer","background","borderRight","marginBottom","tabContentContainer","tabPanel","flexDirection","_ref$selectedTab","selectedTab","routes","isRouteTabs","useTheme","_useLocation$pathname","useLocation","pathname","isSmallScreen","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","setValue","headerList","contentList","useEffect","tabConfigElement","find","tabConfig","to","forEach","child","push","content","TabContext","Box","TabList","event","newValue","orientation","variant","scrollButtons","tabList","map","index","Tab","tabHeader","focusRipple","TabPanel","open","type","onCloseEndpoint","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","filter","validateInput","valid","includes","_toConsumableArray","Webhook","CallToActionIcon","PendingActionsIcon","Fragment","ModalWrapper","modalOpen","onClose","titleIcon","sx","formFieldStyles","formFieldRow","InputBoxWrapper","target","validity","error","pattern","required","LinearProgress","Button","onClick","trim","payload","key_values","key","arn_resource_id","api","configs","setConfig","then","res","setServerNeedsRestart","data","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","errorToHandler","selectedARN","deleteLoading","setDeleteLoading","resetConfig","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","DialogContentText","_overrideValues$enabl","_overrideValues$endpo","_overrideValues$auth_","endpointInfo","endpointState","setEndpointState","endpointLocate","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","PredefinedList","actionButton","paddingRight","overrideEnv","ConsoleIcon","auth_token","FormSwitchWrapper","e","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","disableButtonFunction","wHook","element","_wHook$key_values","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","justifyItems","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","settingsCommon","settingsFormContainer","gridTemplateColumns","gridGap","selectedConfiguration","_ref$className","navigate","useNavigate","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","get","configInfo","values","keyVals","fieldsConfigurations","field","includedValue","customValue","customValueProcess","removeEmptyFields","configuration_id","onValueChange","useCallback","resetConfigurationMOpen","onMouseMove","setHelpName","configuration_label","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","ConfTargetGeneric","fields","defaultVals","maxHeight","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","now","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","useRef","files","fileToUpload","formData","FormData","blobFile","append","ref","current","click","DownloadIcon","NON_SUB_SYS_CONFIG_ITEMS","IGNORED_CONFIG_SUB_SYS","settingsOptionsContainer","flexWrap","searchField","containerForHeader","configSubSysList","setConfigSubSysList","fetchConfigSubSysList","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","listConfig","_res$data","configurations","_res$data2","confSubSysList","reduce","acc","_ref3","_ref3$key","stop","availableConfigSubSys","_ref4","PageHeaderWrapper","HelpMenu","PageLayout","ScreenTitle","SettingsIcon","gap","ImportConfigButton","ExportConfigButton","VerticalTabs","Routes","Route","path","ConfigurationForm","Navigate","IAM_PAGES","SETTINGS","Link","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","LogsIcon","region","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","origValue","formFields","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","overrideReturn","envItem","wrapText","whiteSpace","wordWrap","deleteDialogStyles","resetLoading","setResetLoading"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1516.216550a5.chunk.js b/portal-ui/build/static/js/1516.216550a5.chunk.js
deleted file mode 100644
index 45c4eeb4b..000000000
--- a/portal-ui/build/static/js/1516.216550a5.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1516],{57314:function(e,n,t){var i=t(1413),r=t(72791),s=t(61889),o=t(30829),a=t(20068),l=t(27391),c=t(11135),x=t(25787),u=t(23814),d=t(29945),p=t(80184);n.Z=(0,x.Z)((function(e){return(0,c.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.YI),u.Hr),{},{inputLabel:(0,i.Z)((0,i.Z)({},u.YI.inputLabel),{},{fontSize:14,margin:0,alignItems:"flex-start",paddingTop:"20px",flexWrap:"wrap",display:"flex"}),textBoxContainer:{flexGrow:1,position:"relative"},cssOutlinedInput:{borderColor:"#EAEAEA",padding:16},rootContainer:{"& .MuiOutlinedInput-inputMultiline":(0,i.Z)((0,i.Z)({},u.YI.inputLabel),{},{fontSize:13,minHeight:150}),"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1},"& textarea":{color:"#07193E",fontSize:13,fontWeight:600,"&:placeholder":{color:"#858585",opacity:1,fontWeight:400}}}}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,c=e.id,x=e.name,u=e.disabled,f=void 0!==u&&u,h=e.tooltip,g=void 0===h?"":h,m=e.index,j=void 0===m?0:m,b=e.error,v=void 0===b?"":b,Z=e.required,y=void 0!==Z&&Z,w=e.placeholder,k=void 0===w?"":w,C=e.classes,I={"data-index":j};return(0,p.jsx)(r.Fragment,{children:(0,p.jsxs)(s.ZP,{item:!0,xs:12,className:"".concat(C.fieldContainer," ").concat(""!==v?C.errorInField:""),children:[""!==n&&(0,p.jsxs)(o.Z,{htmlFor:c,className:C.inputLabel,children:[(0,p.jsxs)("span",{children:[n,y?"*":""]}),""!==g&&(0,p.jsx)("div",{className:C.tooltipContainer,children:(0,p.jsx)(a.Z,{title:g,placement:"top-start",children:(0,p.jsx)("div",{className:C.tooltip,children:(0,p.jsx)(d.byK,{})})})})]}),(0,p.jsx)("div",{className:C.textBoxContainer,children:(0,p.jsx)(l.Z,{id:c,name:x,fullWidth:!0,value:i,disabled:f,onChange:t,multiline:!0,rows:5,inputProps:I,error:""!==v,helperText:v,placeholder:k,InputLabelProps:{shrink:!0},InputProps:{classes:{notchedOutline:C.cssOutlinedInput,root:C.rootContainer}},variant:"outlined"})})]})})}))},21435:function(e,n,t){var i=t(29439),r=t(1413),s=t(72791),o=t(27391),a=t(61889),l=t(30829),c=t(20068),x=t(13400),u=t(20165),d=t(3579),p=t(11135),f=t(72455),h=t(25787),g=t(23814),m=t(29945),j=t(28182),b=t(80184),v=(0,f.Z)((function(e){return(0,p.Z)((0,r.Z)({},g.gM))}));function Z(e){var n=v();return(0,b.jsx)(o.Z,(0,r.Z)({InputProps:{classes:n}},e))}n.Z=(0,h.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},g.YI),g.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,o=e.value,p=e.id,f=e.name,h=e.type,g=void 0===h?"text":h,v=e.autoComplete,y=void 0===v?"off":v,w=e.disabled,k=void 0!==w&&w,C=e.multiline,I=void 0!==C&&C,S=e.tooltip,L=void 0===S?"":S,T=e.index,z=void 0===T?0:T,F=e.error,N=void 0===F?"":F,P=e.required,A=void 0!==P&&P,E=e.placeholder,B=void 0===E?"":E,K=e.min,R=e.max,W=e.overlayId,O=e.overlayIcon,_=void 0===O?null:O,M=e.overlayObject,U=void 0===M?null:M,G=e.extraInputProps,H=void 0===G?{}:G,Y=e.overlayAction,D=e.noLabelMinWidth,q=void 0!==D&&D,V=e.pattern,Q=void 0===V?"":V,X=e.autoFocus,J=void 0!==X&&X,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,re=e.onPaste,se=(0,r.Z)({"data-index":z},H),oe=(0,s.useState)(!1),ae=(0,i.Z)(oe,2),le=ae[0],ce=ae[1];"number"===g&&K&&(se.min=K),"number"===g&&R&&(se.max=R),""!==Q&&(se.pattern=Q);var xe=_,ue=g;return"password"===g&&null===_&&(xe=le?(0,b.jsx)(u.Z,{}):(0,b.jsx)(d.Z,{}),ue=le?"text":"password"),(0,b.jsx)(s.Fragment,{children:(0,b.jsxs)(a.ZP,{container:!0,className:(0,j.Z)(""!==ne?ne:"",""!==N?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(l.Z,{htmlFor:p,className:q?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[n,A?"*":""]}),""!==L&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(c.Z,{title:L,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(Z,{id:p,name:f,fullWidth:!0,value:o,autoFocus:J,disabled:k,onChange:t,type:ue,multiline:I,autoComplete:y,inputProps:se,error:""!==N,helperText:N,placeholder:B,className:$.inputRebase,onKeyPress:te,onFocus:ie,onPaste:re}),xe&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(x.Z,{onClick:Y?function(){Y()}:function(){return ce(!le)},id:W,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:xe})}),U&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:U})]})]})})}))},90673:function(e,n,t){var i=t(1413),r=t(72791),s=t(61889),o=t(886),a=t(30829),l=t(20068),c=t(68096),x=t(58406),u=t(77865),d=t(11135),p=t(25787),f=t(23814),h=t(29945),g=t(80184),m=(0,p.Z)((function(e){return(0,d.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(o.ZP);n.Z=(0,p.Z)((function(e){return(0,d.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.YI),f.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,t=e.id,i=e.name,o=e.onChange,d=e.options,p=e.label,f=e.tooltip,j=void 0===f?"":f,b=e.value,v=e.disabled,Z=void 0!==v&&v;return(0,g.jsx)(r.Fragment,{children:(0,g.jsxs)(s.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==p&&(0,g.jsxs)(a.Z,{htmlFor:t,className:n.inputLabel,children:[(0,g.jsx)("span",{children:p}),""!==j&&(0,g.jsx)("div",{className:n.tooltipContainer,children:(0,g.jsx)(l.Z,{title:j,placement:"top-start",children:(0,g.jsx)("div",{className:n.tooltip,children:(0,g.jsx)(h.byK,{})})})})]}),(0,g.jsx)(c.Z,{fullWidth:!0,children:(0,g.jsx)(x.Z,{id:t,name:i,value:b,onChange:o,input:(0,g.jsx)(m,{}),disabled:Z,children:d.map((function(e){return(0,g.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(i,"-").concat(e.label))}))})})]})})}))},51516:function(e,n,t){t.r(n),t.d(n,{default:function(){return se}});var i=t(29439),r=t(1413),s=t(72791),o=t(11135),a=t(23814),l=t(25787),c=t(64554),x=t(81207),u=t(78687),d=t(87995),p=t(81551),f=t(18073),h=t(43896),g=t(19847),m=t(61889),j=t(50533),b=t(29945),v=t(81159),Z=t(21435),y=t(74440),w=t(80184),k=function(e){var n=e.icon,t=void 0===n?null:n,i=e.title;return(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-start"},children:[t,(0,w.jsx)("div",{className:"title-text",children:i})]})},C=function(e){var n=e.email;return(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(y.Z,{email:n}),(0,w.jsx)(m.ZP,{item:!0,xs:12,marginTop:"25px",children:(0,w.jsxs)(c.Z,{sx:{padding:"20px","& a":{color:"#2781B0",cursor:"pointer"}},children:["Login to"," ",(0,w.jsx)(j.Z,{href:"https://subnet.min.io",target:"_blank",style:{color:"#2781B0",cursor:"pointer"},children:"SUBNET"})," ","to avail support for this MinIO cluster"]})})]})},I=function(){var e="mc admin config set {alias} subnet proxy={proxy}",n=(0,s.useState)(!1),t=(0,i.Z)(n,2),r=t[0],o=t[1];return(0,w.jsx)(s.Fragment,{children:(0,w.jsxs)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",padding:"23px",marginTop:"40px",alignItems:"start",justifyContent:"space-between"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex","& .min-icon":{height:"22px",width:"22px"}},children:[(0,w.jsx)(b.ewm,{}),(0,w.jsx)("div",{style:{marginLeft:"10px",fontWeight:600},children:"Proxy Configuration"})]}),(0,w.jsxs)(c.Z,{sx:{marginTop:"10px",marginBottom:"10px",fontSize:"14px"},children:["For airgap/firewalled environments it is possible to"," ",(0,w.jsx)(j.Z,{style:{color:"#2781B0",cursor:"pointer"},href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con",target:"_blank",children:"configure a proxy"})," ","to connect to SUBNET ."]}),(0,w.jsx)(c.Z,{children:r&&(0,w.jsx)(Z.Z,{disabled:!0,id:"subnetProxy",name:"subnetProxy",placeholder:"",onChange:function(){},label:"",value:e,overlayIcon:(0,w.jsx)(b.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(e)}})})]}),(0,w.jsx)(c.Z,{sx:{display:"flex"},children:(0,w.jsx)(v.Z,{value:"enableProxy",id:"enableProxy",name:"enableProxy",checked:r,onChange:function(e){o(e.target.checked)}})})]})})},S=t(3579),L=t(20165),T=t(30403),z=t(23508),F=t(9505),N=(0,l.Z)((function(e){return(0,o.Z)((0,r.Z)((0,r.Z)({sizedLabel:{minWidth:"75px"}},a.Bz),a.bK))}))((function(e){var n=e.open,t=e.closeModal,r=e.classes,o=e.onSet,a=(0,p.TL)(),l=(0,s.useState)(""),x=(0,i.Z)(l,2),u=x[0],f=x[1],h=(0,s.useState)(""),g=(0,i.Z)(h,2),m=g[0],j=g[1],v=(0,s.useState)(!1),y=(0,i.Z)(v,2),k=y[0],C=y[1],I=(0,s.useState)(""),N=(0,i.Z)(I,2),P=N[0],A=N[1],E=(0,s.useState)(""),B=(0,i.Z)(E,2),K=B[0],R=B[1],W=(0,F.Z)((function(e){e.mfa_token?A(e.mfa_token):e.access_token?M("GET","/api/v1/subnet/apikey?token=".concat(e.access_token)):(o(e.apiKey),t())}),(function(e){a((0,d.Ih)(e)),t(),f(""),j(""),C(!1),A(""),R("")})),O=(0,i.Z)(W,2),_=O[0],M=O[1],U=function(){return(0,w.jsxs)(c.Z,{sx:{width:500},children:[(0,w.jsx)(Z.Z,{className:r.spacerBottom,classes:{inputLabel:r.sizedLabel},id:"subnet-email",name:"subnet-email",onChange:function(e){return f(e.target.value)},label:"Email",value:u,overlayIcon:(0,w.jsx)(b.oyc,{})}),(0,w.jsx)(Z.Z,{className:r.spacerBottom,classes:{inputLabel:r.sizedLabel},id:"subnet-password",name:"subnet-password",onChange:function(e){return j(e.target.value)},label:"Password",type:k?"text":"password",value:m,overlayIcon:k?(0,w.jsx)(L.Z,{}):(0,w.jsx)(S.Z,{}),overlayAction:function(){return C(!k)}})]})},G=function(){return(0,w.jsx)(c.Z,{sx:{display:"flex"},children:(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Two-Factor Authentication"}),(0,w.jsx)(c.Z,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,w.jsx)(c.Z,{sx:{flex:"1",marginTop:"30px"},children:(0,w.jsx)(Z.Z,{overlayIcon:(0,w.jsx)(T.Z,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(e){return R(e.target.value)},placeholder:"",label:"",value:K})}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"}})]})})};return n?(0,w.jsx)(z.Z,{title:"Get API Key from SUBNET",confirmText:"Get API Key",isOpen:n,titleIcon:(0,w.jsx)(b.szr,{}),isLoading:_,cancelText:"Cancel",onConfirm:function(){""!==P?M("POST","/api/v1/subnet/login/mfa",{username:u,otp:K,mfa_token:P}):M("POST","/api/v1/subnet/login",{username:u,password:m})},onClose:t,confirmButtonProps:{variant:"callAction",disabled:!u||!m||_,hidden:!0},cancelButtonProps:{disabled:_},confirmationContent:""===P?U():G()}):null})),P=function(e){var n=e.icon,t=e.description;return(0,w.jsxs)(c.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,w.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},A=function(e){var n=e.hasMargin,t=void 0===n||n;return(0,w.jsxs)(c.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginLeft:{xs:"0px",sm:"0px",md:t?"30px":""},marginTop:{xs:"0px",sm:t?"30px":""}},children:[(0,w.jsxs)(c.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,w.jsx)(b.M9A,{}),(0,w.jsx)("div",{children:"Why should I register?"})]}),(0,w.jsx)(c.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:"Registering this cluster with the MinIO Subscription Network (SUBNET) provides the following benefits in addition to the commercial license and SLA backed support."}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,w.jsx)(P,{icon:(0,w.jsx)(b._qw,{}),description:"Call Home Monitoring"}),(0,w.jsx)(P,{icon:(0,w.jsx)(b.toM,{}),description:"Health Diagnostics"}),(0,w.jsx)(P,{icon:(0,w.jsx)(b.Fsz,{}),description:"Performance Analysis"}),(0,w.jsx)(P,{icon:(0,w.jsx)(b.EQx,{}),description:(0,w.jsx)(j.Z,{href:"https://min.io/signup?ref=con",target:"_blank",sx:{color:"#2781B0",cursor:"pointer"},children:"More Features"})})]})]})},E=t(57689),B=t(56087),K=(0,l.Z)((function(e){return(0,o.Z)((0,r.Z)({sizedLabel:{minWidth:"75px"}},a.bK))}))((function(e){var n=e.classes,t=e.registerEndpoint,r=(0,E.s0)(),o=(0,s.useState)(!1),a=(0,i.Z)(o,2),l=a[0],u=a[1],f=(0,s.useState)(""),h=(0,i.Z)(f,2),g=h[0],m=h[1],j=(0,s.useState)(!1),v=(0,i.Z)(j,2),y=v[0],C=v[1],I=(0,s.useState)(!1),S=(0,i.Z)(I,2),L=S[0],T=S[1],z=(0,p.TL)(),F=(0,s.useCallback)((function(){if(!y){C(!0);var e={apiKey:g};x.Z.invoke("POST",t,e).then((function(e){C(!1),e&&e.registered&&(z((0,d.cN)(!0)),r(B.gA.LICENSE))})).catch((function(e){z((0,d.Ih)(e)),C(!1),P()}))}}),[g,z,y,t,r]);(0,s.useEffect)((function(){L&&F()}),[L,F]);var P=function(){m(""),T(!1)};return(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(k,{icon:(0,w.jsx)(b.dRy,{}),title:"Register cluster with API key"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:{xs:"column",md:"row"}},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Use your MinIO Subscription Network API Key to register this cluster."}),(0,w.jsxs)(c.Z,{sx:{flex:"1"},children:[(0,w.jsx)(Z.Z,{className:n.spacerBottom,classes:{inputLabel:n.sizedLabel},id:"api-key",name:"api-key",onChange:function(e){return m(e.target.value)},label:"API Key",value:g}),(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,w.jsx)(b.zxk,{id:"get-from-subnet",variant:"regular",className:n.spacerRight,disabled:y,onClick:function(){return u(!0)},label:"Get from SUBNET"}),(0,w.jsx)(b.zxk,{id:"register",type:"submit",variant:"callAction",disabled:y||0===g.trim().length,onClick:function(){return F()},label:"Register"}),(0,w.jsx)(N,{open:l,closeModal:function(){return u(!1)},onSet:function(e){m(e),T(!0)}})]})]})]}),(0,w.jsx)(A,{})]})]})})),R=t(74165),W=t(15861),O=t(36825),_=t(96382),M=t(38442),U=(0,_.hg)("register/fetchLicenseInfo",function(){var e=(0,W.Z)((0,R.Z)().mark((function e(n,t){var i,r,s,o;return(0,R.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,r=t.dispatch,s=i(),o=(0,M.F)(B.C3,B.LC[B.gA.LICENSE],!0),!s.register.loadingLicenseInfo){e.next=6;break}return e.abrupt("return");case 6:o?(r((0,O.pI)(!0)),x.Z.invoke("GET","/api/v1/subnet/info").then((function(e){r((0,O.aO)(e)),r((0,O.Dr)(!0)),r((0,O.pI)(!1))})).catch((function(e){e.detailedError.toLowerCase()!=="License is not present".toLowerCase()&&e.detailedError.toLowerCase()!=="license not found".toLowerCase()&&r((0,d.Ih)(e)),r((0,O.Dr)(!1)),r((0,O.pI)(!1))}))):r((0,O.pI)(!1));case 7:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),G=(0,_.hg)("register/callRegister",function(){var e=(0,W.Z)((0,R.Z)().mark((function e(n,t){var i,r;return(0,R.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.dispatch,r={token:n.token,account_id:n.account_id},x.Z.invoke("POST","/api/v1/subnet/register",r).then((function(){i((0,O.K4)(!1)),i((0,d.cN)(!0)),i((0,O.jS)()),i(U())})).catch((function(e){i((0,d.Ih)(e)),i((0,O.K4)(!1))}));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),H=(0,_.hg)("register/subnetLoginWithMFA",function(){var e=(0,W.Z)((0,R.Z)().mark((function e(n,t){var i,r,s,o,a,l,c;return(0,R.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,t.rejectWithValue,r=t.dispatch,s=i(),o=s.register.subnetEmail,a=s.register.subnetMFAToken,l=s.register.subnetOTP,!s.register.loading){e.next=8;break}return e.abrupt("return");case 8:r((0,O.K4)(!0)),c={username:o,otp:l,mfa_token:a},x.Z.invoke("POST","/api/v1/subnet/login/mfa",c).then((function(e){r((0,O.K4)(!1)),e&&e.access_token&&e.organizations.length>0&&(1===e.organizations.length?r(G({token:e.access_token,account_id:e.organizations[0].accountId.toString()})):(r((0,O.t2)(e.access_token)),r((0,O.dl)(e.organizations)),r((0,O.wK)(e.organizations[0].accountId.toString()))))})).catch((function(e){r((0,d.Ih)(e)),r((0,O.K4)(!1)),r((0,O.Z7)(""))}));case 11:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),Y=(0,_.hg)("register/subnetLogin",function(){var e=(0,W.Z)((0,R.Z)().mark((function e(n,t){var i,r,s,o,a,l,c;return(0,R.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,t.rejectWithValue,r=t.dispatch,s=i(),o=s.register.license,a=s.register.subnetPassword,l=s.register.subnetEmail,!s.register.loading){e.next=8;break}return e.abrupt("return");case 8:r((0,O.K4)(!0)),c={username:l,password:a,apiKey:o},x.Z.invoke("POST","/api/v1/subnet/login",c).then((function(e){r((0,O.K4)(!1)),e&&e.registered?(r((0,O.jS)()),r(U())):e&&e.mfa_token?r((0,O.dK)(e.mfa_token)):e&&e.access_token&&e.organizations.length>0&&(r((0,O.t2)(e.access_token)),r((0,O.dl)(e.organizations)),r((0,O.wK)(e.organizations[0].accountId.toString())))})).catch((function(e){r((0,d.Ih)(e)),r((0,O.K4)(!1)),r((0,O.jS)())}));case 11:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),D=t(27454),q=t(78029),V=t.n(q),Q=t(57314),X=function(){var e=(0,p.TL)(),n=(0,u.v9)((function(e){return e.register.subnetRegToken})),t=(0,u.v9)((function(e){return e.register.clusterRegistered})),r=(0,u.v9)((function(e){return e.register.licenseInfo})),o="https://subnet.min.io/cluster/register?token=".concat(n),a=(0,s.useState)(""),l=(0,i.Z)(a,2),x=l[0],f=l[1],h=(0,F.Z)((function(){e(U()),e((0,d.cN)(!0))}),(function(n){e((0,d.Ih)(n))})),g=(0,i.Z)(h,2),m=g[0],v=g[1];return(0,w.jsx)(s.Fragment,{children:(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:t&&r?(0,w.jsx)(C,{email:r.email}):(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(k,{icon:(0,w.jsx)(b.YL8,{}),title:"Register cluster in an Air-gap environment"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsx)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2",marginTop:"15px","& .step-number":{color:"#ffffff",height:"25px",width:"25px",background:"#081C42",marginRight:"10px",textAlign:"center",fontWeight:600,borderRadius:"50%"},"& .step-row":{fontSize:"16px",display:"flex",marginTop:"15px",marginBottom:"15px"}},children:(0,w.jsxs)(c.Z,{children:[(0,w.jsx)(c.Z,{className:"step-row",children:(0,w.jsx)("div",{className:"step-text",children:"Click on the link to register this cluster in SUBNET and get a License Key for this Air-Gap deployment"})}),(0,w.jsxs)(c.Z,{sx:{flex:"1",display:"flex",alignItems:"center",gap:3},children:[(0,w.jsx)(j.Z,{style:{color:"#2781B0",cursor:"pointer"},color:"inherit",href:o,target:"_blank",children:"https://subnet.min.io/cluster/register"}),(0,w.jsx)(D.Z,{tooltip:"Copy to Clipboard",children:(0,w.jsx)(V(),{text:o,children:(0,w.jsx)(b.zxk,{type:"button",id:"copy-ult-to-clip-board",icon:(0,w.jsx)(b.TIy,{}),color:"primary",variant:"regular"})})})]}),(0,w.jsx)("div",{style:{marginTop:"25px",fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:"Note: If this machine does not have internet connection, Copy paste the following URL in a browser where you access SUBNET and follow the instructions to complete the registration"}),(0,w.jsxs)(c.Z,{sx:{marginTop:"25px",display:"flex",flexDirection:"column"},children:[(0,w.jsxs)("label",{style:{fontWeight:"bold",marginBottom:"10px"},children:["Paste the License Key"," "]}),(0,w.jsx)(Q.Z,{value:x,disabled:m,label:"",id:"licenseKey",name:"licenseKey",placeholder:"License Key",onChange:function(e){f(e.target.value)}})]}),(0,w.jsx)(c.Z,{sx:{marginTop:"25px"},children:(0,w.jsx)(b.zxk,{id:"apply-license-key",onClick:function(){v("PUT","/api/v1/configs/subnet",{key_values:[{key:"license",value:x}]})},variant:"callAction",disabled:!x||m,label:"Apply Cluster License"})})]})}),(0,w.jsx)(A,{})]})]})})})},J=function(){var e=(0,p.TL)(),n=(0,u.v9)((function(e){return e.register.subnetMFAToken})),t=(0,u.v9)((function(e){return e.register.subnetOTP})),i=(0,u.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Two-Factor Authentication"}),(0,w.jsx)(c.Z,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,w.jsx)(c.Z,{sx:{flex:"1",marginTop:"30px"},children:(0,w.jsx)(Z.Z,{overlayIcon:(0,w.jsx)(T.Z,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(n){return e((0,O.Z7)(n.target.value))},placeholder:"",label:"",value:t})}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:(0,w.jsx)(b.zxk,{id:"verify",onClick:function(){return e(H())},disabled:i||0===t.trim().length||0===n.trim().length,variant:"callAction",label:"Verify"})})]}),(0,w.jsx)(A,{})]})},$=t(90673),ee=function(){var e=(0,p.TL)(),n=(0,u.v9)((function(e){return e.register.subnetAccessToken})),t=(0,u.v9)((function(e){return e.register.selectedSubnetOrganization})),i=(0,u.v9)((function(e){return e.register.subnetOrganizations})),r=(0,u.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{marginTop:"15px",marginBottom:"15px","& .title-text":{marginLeft:"0px"}},children:(0,w.jsx)(k,{title:"Register MinIO cluster"})}),(0,w.jsxs)(c.Z,{children:[(0,w.jsx)($.Z,{id:"subnet-organization",name:"subnet-organization",onChange:function(n){return e((0,O.wK)(n.target.value))},label:"Select an organization",value:t,options:i.map((function(e){return{label:e.company,value:e.accountId.toString()}}))}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"15px"},children:(0,w.jsx)(b.zxk,{id:"register-cluster",onClick:function(){return function(){r||(e((0,O.K4)(!0)),n&&t&&e(G({token:n,account_id:t})))}},disabled:r||0===n.trim().length,variant:"callAction",label:"Register"})})]})]}),(0,w.jsx)(A,{})]})},ne=(0,t(72455).Z)((function(e){return(0,o.Z)((0,r.Z)({sizedLabel:{minWidth:"75px"}},a.bK))})),te=function(){var e=ne(),n=(0,p.TL)(),t=(0,u.v9)((function(e){return e.register.subnetPassword})),i=(0,u.v9)((function(e){return e.register.subnetEmail})),r=(0,u.v9)((function(e){return e.register.showPassword})),o=(0,u.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(k,{icon:(0,w.jsx)(b.dRy,{}),title:"Online activation of MinIO Subscription Network License"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:{xs:"column",md:"row"}},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Use your MinIO Subscription Network login credentials to register this cluster."}),(0,w.jsxs)(c.Z,{sx:{flex:"1"},children:[(0,w.jsx)(Z.Z,{className:e.spacerBottom,classes:{inputLabel:e.sizedLabel},id:"subnet-email",name:"subnet-email",onChange:function(e){return n((0,O.Ze)(e.target.value))},label:"Email",value:i,overlayIcon:(0,w.jsx)(b.oyc,{})}),(0,w.jsx)(Z.Z,{className:e.spacerBottom,classes:{inputLabel:e.sizedLabel},id:"subnet-password",name:"subnet-password",onChange:function(e){return n((0,O.lr)(e.target.value))},label:"Password",type:r?"text":"password",value:t,overlayIcon:r?(0,w.jsx)(L.Z,{}):(0,w.jsx)(S.Z,{}),overlayAction:function(){return n((0,O.R5)(!r))}}),(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,w.jsx)(b.zxk,{id:"sign-up",type:"submit",className:e.spacerRight,variant:"regular",onClick:function(e){e.preventDefault(),window.open("https://min.io/signup?ref=con","_blank")},label:"Sign up"}),(0,w.jsx)(b.zxk,{id:"register-credentials",type:"submit",variant:"callAction",disabled:o||0===i.trim().length||0===t.trim().length,onClick:function(){return n(Y())},label:"Register"})]})]})]}),(0,w.jsx)(A,{})]})]})},ie=t(47974),re=t(99670),se=(0,l.Z)((function(e){return(0,o.Z)((0,r.Z)({sizedLabel:{minWidth:"75px"}},a.bK))}))((function(e){e.classes;var n=(0,p.TL)(),t=(0,u.v9)((function(e){return e.register.subnetMFAToken})),r=(0,u.v9)((function(e){return e.register.subnetAccessToken})),o=(0,u.v9)((function(e){return e.register.subnetRegToken})),a=(0,u.v9)((function(e){return e.register.subnetOrganizations})),l=(0,u.v9)((function(e){return e.register.loading})),m=(0,u.v9)((function(e){return e.register.loadingLicenseInfo})),j=(0,u.v9)((function(e){return e.register.clusterRegistered})),v=(0,u.v9)((function(e){return e.register.licenseInfo})),Z=(0,u.v9)((function(e){return e.register.curTab})),y=(0,s.useState)(!0),k=(0,i.Z)(y,2),S=k[0],L=k[1];(0,s.useEffect)((function(){return function(){n((0,O.jS)())}}),[n]);(0,s.useEffect)((function(){S&&(n(U()),L(!1))}),[S,L,n]);var T=(0,w.jsx)(s.Fragment,{});T=r&&a.length>0?(0,w.jsx)(ee,{}):t?(0,w.jsx)(J,{}):(0,w.jsx)(te,{});var z=(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:j&&v?(0,w.jsx)(C,{email:v.email}):(0,w.jsx)(K,{registerEndpoint:"/api/v1/subnet/login"})}),(0,w.jsx)(I,{})]}),F=(0,w.jsx)(X,{}),N=(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:j&&v?(0,w.jsx)(C,{email:v.email}):T}),!j&&(0,w.jsx)(I,{})]}),P=m?(0,w.jsx)("div",{children:"Loading.."}):N;return(0,s.useEffect)((function(){n((0,d.Sc)("register"))}),[]),(0,w.jsxs)(s.Fragment,{children:[(0,w.jsx)(ie.Z,{label:"Register to MinIO Subscription Network",actions:(0,w.jsx)(re.Z,{})}),(0,w.jsxs)(b.Xgh,{children:[(0,w.jsxs)(f.Z,{value:Z,onChange:function(e,t){n((0,O.m)(t))},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,w.jsx)(h.Z,{label:"Credentials",id:"simple-tab-0","aria-controls":"simple-tab-panel-0"}),(0,w.jsx)(h.Z,{label:"API Key",id:"simple-tab-1","aria-controls":"simple-tab-panel-1"}),(0,w.jsx)(h.Z,{label:"Air-Gap",id:"simple-tab-2","aria-controls":"simple-tab-panel-2",onClick:function(){l||o||(n((0,O.K4)(!0)),x.Z.invoke("GET","/api/v1/subnet/registration-token").then((function(e){n((0,O.K4)(!1)),e&&e.regToken&&n((0,O.wz)(e.regToken))})).catch((function(e){console.error(e),n((0,d.Ih)(e)),n((0,O.K4)(!1))})))}})]}),(0,w.jsx)(g.x,{index:0,value:Z,children:P}),(0,w.jsx)(g.x,{index:1,value:Z,children:z}),(0,w.jsx)(g.x,{index:2,value:Z,children:F})]})]})}))},74440:function(e,n,t){t(72791);var i=t(64554),r=t(29945),s=t(80184);n.Z=function(e){var n=e.email,t=void 0===n?"":n;return(0,s.jsxs)(i.Z,{sx:{height:"67px",color:"#ffffff",display:"flex",position:"relative",top:"-30px",left:"-32px",width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,s.jsxs)(i.Z,{className:"registered-box",children:[(0,s.jsx)(i.Z,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,s.jsxs)(i.Z,{className:"reg-badge-box",children:[(0,s.jsx)(r.SA,{}),(0,s.jsx)(i.Z,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,s.jsxs)(i.Z,{className:"registered-acc-box",sx:{alignItems:"center",justifyContent:"flex-start",display:{sm:"flex",xs:"none"}},children:[(0,s.jsx)(i.Z,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,s.jsx)(i.Z,{sx:{marginLeft:"8px",fontWeight:600},children:t})]})]})}}}]);
-//# sourceMappingURL=1516.216550a5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1516.216550a5.chunk.js.map b/portal-ui/build/static/js/1516.216550a5.chunk.js.map
deleted file mode 100644
index 59da40e6b..000000000
--- a/portal-ui/build/static/js/1516.216550a5.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1516.216550a5.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CommentBoxWrapper/CommentBoxWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Support/utils.tsx","screens/Console/Support/GetApiKeyModal.tsx","screens/Console/Support/RegisterHelpBox.tsx","screens/Console/Support/ApiKeyRegister.tsx","screens/Console/Support/registerThunks.ts","screens/Console/Support/OfflineRegistration.tsx","screens/Console/Support/SubnetMFAToken.tsx","screens/Console/Support/ClusterRegistrationForm.tsx","screens/Console/Support/OnlineRegistration.tsx","screens/Console/Support/Register.tsx","screens/Console/Support/RegistrationStatusBanner.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Grid, InputLabel, TextField, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CommentBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: 14,\n margin: 0,\n alignItems: \"flex-start\",\n paddingTop: \"20px\",\n flexWrap: \"wrap\",\n display: \"flex\",\n },\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n cssOutlinedInput: {\n borderColor: \"#EAEAEA\",\n padding: 16,\n },\n rootContainer: {\n \"& .MuiOutlinedInput-inputMultiline\": {\n ...fieldBasic.inputLabel,\n fontSize: 13,\n minHeight: 150,\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#07193E\",\n borderWidth: 1,\n },\n \"& textarea\": {\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n \"&:placeholder\": {\n color: \"#858585\",\n opacity: 1,\n fontWeight: 400,\n },\n },\n },\n });\n\nconst CommentBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n classes,\n}: CommentBoxProps) => {\n let inputProps: any = { \"data-index\": index };\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n\n
\n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(CommentBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n }),\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","import { Box, Grid, Link } from \"@mui/material\";\nimport { Fragment, useState } from \"react\";\nimport { CopyIcon, SettingsIcon } from \"mds\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport RegistrationStatusBanner from \"./RegistrationStatusBanner\";\n\nexport const FormTitle = ({\n icon = null,\n title,\n}: {\n icon?: any;\n title: any;\n}) => {\n return (\n \n {icon}\n
\n \n \n For airgap/firewalled environments it is possible to{\" \"}\n \n configure a proxy\n {\" \"}\n to connect to SUBNET .\n \n \n {displaySubnetProxy && (\n {}}\n label=\"\"\n value={proxyConfigurationCommand}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() =>\n navigator.clipboard.writeText(proxyConfigurationCommand)\n }\n />\n )}\n \n \n \n ) => {\n setDisplaySubnetProxy(event.target.checked);\n }}\n />\n \n \n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport LockOutlinedIcon from \"@mui/icons-material/LockOutlined\";\nimport {\n containerForHeader,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport React, { useState } from \"react\";\nimport { InfoIcon, UsersIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { Box } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...containerForHeader,\n ...spacingUtils,\n });\n\ninterface IGetApiKeyModalProps {\n open: boolean;\n closeModal: () => void;\n onSet: (apiKey: string) => void;\n classes: any;\n}\n\nconst GetApiKeyModal = ({\n open,\n closeModal,\n classes,\n onSet,\n}: IGetApiKeyModalProps) => {\n const dispatch = useAppDispatch();\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [showPassword, setShowPassword] = useState(false);\n const [mfaToken, setMfaToken] = useState(\"\");\n const [subnetOTP, setSubnetOTP] = useState(\"\");\n\n const onError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeModal();\n setEmail(\"\");\n setPassword(\"\");\n setShowPassword(false);\n setMfaToken(\"\");\n setSubnetOTP(\"\");\n };\n\n const onSuccess = (res: any) => {\n if (res.mfa_token) {\n setMfaToken(res.mfa_token);\n } else if (res.access_token) {\n invokeApi(\"GET\", `/api/v1/subnet/apikey?token=${res.access_token}`);\n } else {\n onSet(res.apiKey);\n closeModal();\n }\n };\n\n const [isLoading, invokeApi] = useApi(onSuccess, onError);\n\n const onConfirm = () => {\n if (mfaToken !== \"\") {\n invokeApi(\"POST\", \"/api/v1/subnet/login/mfa\", {\n username: email,\n otp: subnetOTP,\n mfa_token: mfaToken,\n });\n } else {\n invokeApi(\"POST\", \"/api/v1/subnet/login\", { username: email, password });\n }\n };\n\n const getDialogContent = () => {\n if (mfaToken === \"\") {\n return getCredentialsDialog();\n }\n return getMFADialog();\n };\n\n const getCredentialsDialog = () => {\n return (\n \n ) =>\n setEmail(event.target.value)\n }\n label=\"Email\"\n value={email}\n overlayIcon={}\n />\n ) =>\n setPassword(event.target.value)\n }\n label=\"Password\"\n type={showPassword ? \"text\" : \"password\"}\n value={password}\n overlayIcon={\n showPassword ? : \n }\n overlayAction={() => setShowPassword(!showPassword)}\n />\n \n );\n };\n\n const getMFADialog = () => {\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your\n email address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n setSubnetOTP(event.target.value)\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n \n \n );\n };\n\n return open ? (\n }\n isLoading={isLoading}\n cancelText={\"Cancel\"}\n onConfirm={onConfirm}\n onClose={closeModal}\n confirmButtonProps={{\n variant: \"callAction\",\n disabled: !email || !password || isLoading,\n hidden: true,\n }}\n cancelButtonProps={{\n disabled: isLoading,\n }}\n confirmationContent={getDialogContent()}\n />\n ) : null;\n};\n\nexport default withStyles(styles)(GetApiKeyModal);\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, Link } from \"@mui/material\";\nimport {\n CallHomeFeatureIcon,\n DiagnosticsFeatureIcon,\n ExtraFeaturesIcon,\n HelpIconFilled,\n PerformanceFeatureIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string | React.ReactNode;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n \n \n Registering this cluster with the MinIO Subscription Network (SUBNET)\n provides the following benefits in addition to the commercial license\n and SLA backed support.\n \n\n \n }\n description={`Call Home Monitoring`}\n />\n }\n description={`Health Diagnostics`}\n />\n }\n description={`Performance Analysis`}\n />\n }\n description={\n \n More Features\n \n }\n />\n \n \n );\n};\n\nexport default RegisterHelpBox;\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, useCallback, useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, OnlineRegistrationIcon } from \"mds\";\nimport { FormTitle } from \"./utils\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport GetApiKeyModal from \"./GetApiKeyModal\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { SubnetLoginRequest, SubnetLoginResponse } from \"../License/types\";\nimport api from \"../../../common/api\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\n\ninterface IApiKeyRegister {\n classes: any;\n registerEndpoint: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n });\n\nconst ApiKeyRegister = ({ classes, registerEndpoint }: IApiKeyRegister) => {\n const navigate = useNavigate();\n\n const [showApiKeyModal, setShowApiKeyModal] = useState(false);\n const [apiKey, setApiKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [fromModal, setFromModal] = useState(false);\n const dispatch = useAppDispatch();\n\n const onRegister = useCallback(() => {\n if (loading) {\n return;\n }\n setLoading(true);\n let request: SubnetLoginRequest = { apiKey };\n api\n .invoke(\"POST\", registerEndpoint, request)\n .then((resp: SubnetLoginResponse) => {\n setLoading(false);\n if (resp && resp.registered) {\n dispatch(setServerNeedsRestart(true));\n navigate(IAM_PAGES.LICENSE);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n reset();\n });\n }, [apiKey, dispatch, loading, registerEndpoint, navigate]);\n\n useEffect(() => {\n if (fromModal) {\n onRegister();\n }\n }, [fromModal, onRegister]);\n\n const reset = () => {\n setApiKey(\"\");\n setFromModal(false);\n };\n\n return (\n \n \n }\n title={`Register cluster with API key`}\n />\n \n \n \n \n Use your MinIO Subscription Network API Key to register this\n cluster.\n \n \n ) =>\n setApiKey(event.target.value)\n }\n label=\"API Key\"\n value={apiKey}\n />\n\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(ApiKeyRegister);\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 {\n resetRegisterForm,\n setClusterRegistered,\n setLicenseInfo,\n setLoading,\n setLoadingLicenseInfo,\n setSelectedSubnetOrganization,\n setSubnetAccessToken,\n setSubnetMFAToken,\n setSubnetOrganizations,\n setSubnetOTP,\n} from \"./registerSlice\";\nimport api from \"../../../common/api\";\nimport {\n SubnetInfo,\n SubnetLoginRequest,\n SubnetLoginResponse,\n SubnetLoginWithMFARequest,\n SubnetRegisterRequest,\n} from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PAGES_PERMISSIONS,\n} from \"../../../common/SecureComponent/permissions\";\n\nexport const fetchLicenseInfo = createAsyncThunk(\n \"register/fetchLicenseInfo\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n const getSubnetInfo = hasPermission(\n CONSOLE_UI_RESOURCE,\n IAM_PAGES_PERMISSIONS[IAM_PAGES.LICENSE],\n true,\n );\n\n const loadingLicenseInfo = state.register.loadingLicenseInfo;\n\n if (loadingLicenseInfo) {\n return;\n }\n if (getSubnetInfo) {\n dispatch(setLoadingLicenseInfo(true));\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n dispatch(setLicenseInfo(res));\n dispatch(setClusterRegistered(true));\n dispatch(setLoadingLicenseInfo(false));\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.detailedError.toLowerCase() !==\n \"License is not present\".toLowerCase() &&\n err.detailedError.toLowerCase() !==\n \"license not found\".toLowerCase()\n ) {\n dispatch(setErrorSnackMessage(err));\n }\n dispatch(setClusterRegistered(false));\n dispatch(setLoadingLicenseInfo(false));\n });\n } else {\n dispatch(setLoadingLicenseInfo(false));\n }\n },\n);\n\nexport interface ClassRegisterArgs {\n token: string;\n account_id: string;\n}\n\nexport const callRegister = createAsyncThunk(\n \"register/callRegister\",\n async (args: ClassRegisterArgs, { dispatch }) => {\n const request: SubnetRegisterRequest = {\n token: args.token,\n account_id: args.account_id,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/register\", request)\n .then(() => {\n dispatch(setLoading(false));\n dispatch(setServerNeedsRestart(true));\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n },\n);\n\nexport const subnetLoginWithMFA = createAsyncThunk(\n \"register/subnetLoginWithMFA\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const subnetEmail = state.register.subnetEmail;\n const subnetMFAToken = state.register.subnetMFAToken;\n const subnetOTP = state.register.subnetOTP;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n const request: SubnetLoginWithMFARequest = {\n username: subnetEmail,\n otp: subnetOTP,\n mfa_token: subnetMFAToken,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login/mfa\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.access_token && resp.organizations.length > 0) {\n if (resp.organizations.length === 1) {\n dispatch(\n callRegister({\n token: resp.access_token,\n account_id: resp.organizations[0].accountId.toString(),\n }),\n );\n } else {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(setSubnetOTP(\"\"));\n });\n },\n);\n\nexport const subnetLogin = createAsyncThunk(\n \"register/subnetLogin\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const license = state.register.license;\n const subnetPassword = state.register.subnetPassword;\n const subnetEmail = state.register.subnetEmail;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n let request: SubnetLoginRequest = {\n username: subnetEmail,\n password: subnetPassword,\n apiKey: license,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.registered) {\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n } else if (resp && resp.mfa_token) {\n dispatch(setSubnetMFAToken(resp.mfa_token));\n } else if (resp && resp.access_token && resp.organizations.length > 0) {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(resetRegisterForm());\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Box, Link } from \"@mui/material\";\nimport { ClusterRegistered, FormTitle } from \"./utils\";\nimport { Button, CopyIcon, OfflineRegistrationIcon } from \"mds\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport CommentBoxWrapper from \"../Common/FormComponents/CommentBoxWrapper/CommentBoxWrapper\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\n\nconst OfflineRegistration = () => {\n const dispatch = useAppDispatch();\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n\n const offlineRegUrl = `https://subnet.min.io/cluster/register?token=${subnetRegToken}`;\n\n const [licenseKey, setLicenseKey] = useState(\"\");\n\n const [isSaving, invokeApplyLicenseApi] = useApi(\n () => {\n dispatch(fetchLicenseInfo());\n dispatch(setServerNeedsRestart(true));\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const applyAirGapLicense = () => {\n invokeApplyLicenseApi(\"PUT\", `/api/v1/configs/subnet`, {\n key_values: [{ key: \"license\", value: licenseKey }],\n });\n };\n\n return (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n \n }\n title={`Register cluster in an Air-gap environment`}\n />\n \n\n \n \n \n \n
\n Click on the link to register this cluster in SUBNET and\n get a License Key for this Air-Gap deployment\n
\n Note: If this machine does not have internet connection,\n Copy paste the following URL in a browser where you access\n SUBNET and follow the instructions to complete the\n registration\n
\n\n \n \n {\n setLicenseKey(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default OfflineRegistration;\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 { Box } from \"@mui/material\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport LockOutlinedIcon from \"@mui/icons-material/LockOutlined\";\nimport { setSubnetOTP } from \"./registerSlice\";\nimport { Button } from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { subnetLoginWithMFA } from \"./registerThunks\";\n\nconst SubnetMFAToken = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetOTP = useSelector((state: AppState) => state.register.subnetOTP);\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your email\n address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n dispatch(setSubnetOTP(event.target.value))\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n dispatch(subnetLoginWithMFA())}\n disabled={\n loading ||\n subnetOTP.trim().length === 0 ||\n subnetMFAToken.trim().length === 0\n }\n variant=\"callAction\"\n label={\"Verify\"}\n />\n \n \n\n \n \n );\n};\nexport default SubnetMFAToken;\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 { Box } from \"@mui/material\";\nimport { FormTitle } from \"./utils\";\nimport SelectWrapper from \"../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { setLoading, setSelectedSubnetOrganization } from \"./registerSlice\";\nimport { Button } from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { callRegister } from \"./registerThunks\";\n\nconst ClusterRegistrationForm = () => {\n const dispatch = useAppDispatch();\n\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n const selectedSubnetOrganization = useSelector(\n (state: AppState) => state.register.selectedSubnetOrganization,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n \n \n \n \n \n dispatch(setSelectedSubnetOrganization(e.target.value as string))\n }\n label=\"Select an organization\"\n value={selectedSubnetOrganization}\n options={subnetOrganizations.map((organization) => ({\n label: organization.company,\n value: organization.accountId.toString(),\n }))}\n />\n \n () => {\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n if (subnetAccessToken && selectedSubnetOrganization) {\n dispatch(\n callRegister({\n token: subnetAccessToken,\n account_id: selectedSubnetOrganization,\n }),\n );\n }\n }}\n disabled={loading || subnetAccessToken.trim().length === 0}\n variant=\"callAction\"\n label={\"Register\"}\n />\n \n \n \n \n \n );\n};\n\nexport default ClusterRegistrationForm;\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 } from \"@mui/material\";\nimport { FormTitle } from \"./utils\";\nimport { Button, OnlineRegistrationIcon, UsersIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport {\n setShowPassword,\n setSubnetEmail,\n setSubnetPassword,\n} from \"./registerSlice\";\nimport { subnetLogin } from \"./registerThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n }),\n);\n\nconst OnlineRegistration = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const subnetPassword = useSelector(\n (state: AppState) => state.register.subnetPassword,\n );\n const subnetEmail = useSelector(\n (state: AppState) => state.register.subnetEmail,\n );\n const showPassword = useSelector(\n (state: AppState) => state.register.showPassword,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n }\n title={`Online activation of MinIO Subscription Network License`}\n />\n \n \n \n \n Use your MinIO Subscription Network login credentials to register\n this cluster.\n \n \n ) =>\n dispatch(setSubnetEmail(event.target.value))\n }\n label=\"Email\"\n value={subnetEmail}\n overlayIcon={}\n />\n ) =>\n dispatch(setSubnetPassword(event.target.value))\n }\n label=\"Password\"\n type={showPassword ? \"text\" : \"password\"}\n value={subnetPassword}\n overlayIcon={\n showPassword ? : \n }\n overlayAction={() => dispatch(setShowPassword(!showPassword))}\n />\n\n \n {\n e.preventDefault();\n window.open(`https://min.io/signup?ref=con`, \"_blank\");\n }}\n label={\"Sign up\"}\n />\n dispatch(subnetLogin())}\n label={\"Register\"}\n />\n \n \n \n \n \n \n );\n};\n\nexport default OnlineRegistration;\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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../common/api\";\n\nimport { SubnetRegTokenResponse } from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useSelector } from \"react-redux\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { TabPanel } from \"../../shared/tabs\";\nimport { ClusterRegistered, ProxyConfiguration } from \"./utils\";\nimport ApiKeyRegister from \"./ApiKeyRegister\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n resetRegisterForm,\n setCurTab,\n setLoading,\n setSubnetRegToken,\n} from \"./registerSlice\";\nimport OfflineRegistration from \"./OfflineRegistration\";\nimport SubnetMFAToken from \"./SubnetMFAToken\";\nimport ClusterRegistrationForm from \"./ClusterRegistrationForm\";\nimport OnlineRegistration from \"./OnlineRegistration\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { PageLayout } from \"mds\";\nimport HelpMenu from \"../HelpMenu\";\n\ninterface IRegister {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n });\n\nconst Register = ({ classes }: IRegister) => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n\n const loading = useSelector((state: AppState) => state.register.loading);\n const loadingLicenseInfo = useSelector(\n (state: AppState) => state.register.loadingLicenseInfo,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n const curTab = useSelector((state: AppState) => state.register.curTab);\n\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n\n useEffect(() => {\n // when unmounted, reset\n return () => {\n dispatch(resetRegisterForm());\n };\n }, [dispatch]);\n\n const fetchSubnetRegToken = () => {\n if (loading || subnetRegToken) {\n return;\n }\n dispatch(setLoading(true));\n api\n .invoke(\"GET\", \"/api/v1/subnet/registration-token\")\n .then((resp: SubnetRegTokenResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.regToken) {\n dispatch(setSubnetRegToken(resp.regToken));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n };\n\n useEffect(() => {\n if (initialLicenseLoading) {\n dispatch(fetchLicenseInfo());\n setInitialLicenseLoading(false);\n }\n }, [initialLicenseLoading, setInitialLicenseLoading, dispatch]);\n\n let clusterRegistrationForm: JSX.Element = ;\n\n if (subnetAccessToken && subnetOrganizations.length > 0) {\n clusterRegistrationForm = ;\n } else if (subnetMFAToken) {\n clusterRegistrationForm = ;\n } else {\n clusterRegistrationForm = ;\n }\n\n const apiKeyRegistration = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n )}\n \n \n \n );\n\n const offlineRegistration = ;\n\n const regUi = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n clusterRegistrationForm\n )}\n \n\n {!clusterRegistered && }\n \n );\n\n const loadingUi =
Loading..
;\n const uiToShow = loadingLicenseInfo ? loadingUi : regUi;\n\n useEffect(() => {\n dispatch(setHelpName(\"register\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n , newValue: number) => {\n dispatch(setCurTab(newValue));\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n fetchSubnetRegToken()}\n />\n \n\n \n {uiToShow}\n \n \n {apiKeyRegistration}\n \n \n {offlineRegistration}\n \n \n \n );\n};\n\nexport default withStyles(styles)(Register);\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { VerifiedIcon } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","tooltipHelper","inputLabel","fontSize","margin","alignItems","paddingTop","flexWrap","display","textBoxContainer","flexGrow","position","cssOutlinedInput","borderColor","padding","rootContainer","minHeight","borderWidth","color","fontWeight","opacity","_ref","label","onChange","value","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","classes","inputProps","_jsx","React","children","_jsxs","Grid","item","xs","className","concat","fieldContainer","errorInField","InputLabel","htmlFor","tooltipContainer","Tooltip","title","placement","HelpIcon","TextField","fullWidth","multiline","rows","helperText","InputLabelProps","shrink","InputProps","notchedOutline","root","variant","inputStyles","makeStyles","inputFieldStyles","InputField","props","overlayAction","right","top","maxWidth","maxHeight","_ref$type","type","_ref$autoComplete","autoComplete","_ref$multiline","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","container","clsx","inputBoxContainer","noMinWidthLabel","inputRebase","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","SelectStyled","height","lineHeight","marginTop","spacing","input","border","borderRadius","backgroundColor","InputBase","flexFlow","options","FormControl","Select","map","option","MenuItem","FormTitle","_ref$icon","icon","Box","sx","justifyContent","ClusterRegistered","_ref2","email","Fragment","RegistrationStatusBanner","cursor","Link","href","target","style","ProxyConfiguration","proxyConfigurationCommand","displaySubnetProxy","setDisplaySubnetProxy","width","SettingsIcon","marginLeft","marginBottom","InputBoxWrapper","CopyIcon","readOnly","navigator","clipboard","writeText","FormSwitchWrapper","checked","event","sizedLabel","minWidth","containerForHeader","spacingUtils","open","closeModal","onSet","dispatch","useAppDispatch","setEmail","_useState3","_useState4","password","setPassword","_useState5","_useState6","showPassword","setShowPassword","_useState7","_useState8","mfaToken","setMfaToken","_useState9","_useState10","subnetOTP","setSubnetOTP","_useApi","useApi","res","mfa_token","access_token","invokeApi","apiKey","err","setErrorSnackMessage","_useApi2","isLoading","getCredentialsDialog","spacerBottom","UsersIcon","getMFADialog","flex","LockOutlinedIcon","ConfirmDialog","confirmText","isOpen","titleIcon","InfoIcon","cancelText","onConfirm","username","otp","onClose","confirmButtonProps","hidden","cancelButtonProps","confirmationContent","FeatureItem","description","marginRight","fontStyle","_ref2$hasMargin","hasMargin","sm","md","HelpIconFilled","CallHomeFeatureIcon","DiagnosticsFeatureIcon","PerformanceFeatureIcon","ExtraFeaturesIcon","registerEndpoint","navigate","useNavigate","showApiKeyModal","setShowApiKeyModal","setApiKey","loading","setLoading","fromModal","setFromModal","onRegister","useCallback","request","api","invoke","then","resp","registered","setServerNeedsRestart","IAM_PAGES","LICENSE","catch","reset","useEffect","OnlineRegistrationIcon","Button","spacerRight","trim","length","GetApiKeyModal","RegisterHelpBox","fetchLicenseInfo","createAsyncThunk","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_","getState","state","getSubnetInfo","wrap","_context","prev","next","hasPermission","CONSOLE_UI_RESOURCE","IAM_PAGES_PERMISSIONS","register","loadingLicenseInfo","abrupt","setLoadingLicenseInfo","setLicenseInfo","setClusterRegistered","detailedError","toLowerCase","stop","_x","_x2","apply","arguments","callRegister","_ref4","_callee2","args","_ref3","_context2","token","account_id","resetRegisterForm","_x3","_x4","subnetLoginWithMFA","_ref6","_callee3","_ref5","subnetEmail","subnetMFAToken","_context3","rejectWithValue","organizations","accountId","toString","setSubnetAccessToken","setSubnetOrganizations","setSelectedSubnetOrganization","_x5","_x6","subnetLogin","_ref8","_callee4","_ref7","license","subnetPassword","_context4","setSubnetMFAToken","_x7","_x8","subnetRegToken","useSelector","clusterRegistered","licenseInfo","offlineRegUrl","licenseKey","setLicenseKey","isSaving","invokeApplyLicenseApi","OfflineRegistrationIcon","background","textAlign","gap","TooltipWrapper","CopyToClipboard","text","flexDirection","CommentBoxWrapper","e","key_values","key","subnetAccessToken","selectedSubnetOrganization","subnetOrganizations","SelectWrapper","organization","company","useStyles","setSubnetEmail","setSubnetPassword","preventDefault","window","curTab","initialLicenseLoading","setInitialLicenseLoading","clusterRegistrationForm","ClusterRegistrationForm","SubnetMFAToken","OnlineRegistration","apiKeyRegistration","ApiKeyRegister","offlineRegistration","OfflineRegistration","regUi","uiToShow","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","newValue","setCurTab","indicatorColor","textColor","scrollButtons","Tab","regToken","setSubnetRegToken","console","TabPanel","_ref$email","left","fill","VerifiedIcon"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1516.b3513b8c.chunk.js b/portal-ui/build/static/js/1516.b3513b8c.chunk.js
new file mode 100644
index 000000000..e74e25bd4
--- /dev/null
+++ b/portal-ui/build/static/js/1516.b3513b8c.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1516],{57314:function(e,t,n){"use strict";var r=n(1413),i=n(72791),o=n(61889),s=n(30829),a=n(20068),l=n(27391),c=n(11135),u=n(25787),d=n(23814),p=n(29945),f=n(80184);t.Z=(0,u.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},d.YI),d.Hr),{},{inputLabel:(0,r.Z)((0,r.Z)({},d.YI.inputLabel),{},{fontSize:14,margin:0,alignItems:"flex-start",paddingTop:"20px",flexWrap:"wrap",display:"flex"}),textBoxContainer:{flexGrow:1,position:"relative"},cssOutlinedInput:{borderColor:"#EAEAEA",padding:16},rootContainer:{"& .MuiOutlinedInput-inputMultiline":(0,r.Z)((0,r.Z)({},d.YI.inputLabel),{},{fontSize:13,minHeight:150}),"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1},"& textarea":{color:"#07193E",fontSize:13,fontWeight:600,"&:placeholder":{color:"#858585",opacity:1,fontWeight:400}}}}))}))((function(e){var t=e.label,n=e.onChange,r=e.value,c=e.id,u=e.name,d=e.disabled,x=void 0!==d&&d,h=e.tooltip,g=void 0===h?"":h,m=e.index,b=void 0===m?0:m,v=e.error,y=void 0===v?"":v,j=e.required,Z=void 0!==j&&j,w=e.placeholder,C=void 0===w?"":w,k=e.classes,S={"data-index":b};return(0,f.jsx)(i.Fragment,{children:(0,f.jsxs)(o.ZP,{item:!0,xs:12,className:"".concat(k.fieldContainer," ").concat(""!==y?k.errorInField:""),children:[""!==t&&(0,f.jsxs)(s.Z,{htmlFor:c,className:k.inputLabel,children:[(0,f.jsxs)("span",{children:[t,Z?"*":""]}),""!==g&&(0,f.jsx)("div",{className:k.tooltipContainer,children:(0,f.jsx)(a.Z,{title:g,placement:"top-start",children:(0,f.jsx)("div",{className:k.tooltip,children:(0,f.jsx)(p.byK,{})})})})]}),(0,f.jsx)("div",{className:k.textBoxContainer,children:(0,f.jsx)(l.Z,{id:c,name:u,fullWidth:!0,value:r,disabled:x,onChange:n,multiline:!0,rows:5,inputProps:S,error:""!==y,helperText:y,placeholder:C,InputLabelProps:{shrink:!0},InputProps:{classes:{notchedOutline:k.cssOutlinedInput,root:k.rootContainer}},variant:"outlined"})})]})})}))},21435:function(e,t,n){"use strict";var r=n(29439),i=n(1413),o=n(72791),s=n(27391),a=n(61889),l=n(30829),c=n(20068),u=n(13400),d=n(20165),p=n(3579),f=n(11135),x=n(72455),h=n(25787),g=n(23814),m=n(29945),b=n(28182),v=n(80184),y=(0,x.Z)((function(e){return(0,f.Z)((0,i.Z)({},g.gM))}));function j(e){var t=y();return(0,v.jsx)(s.Z,(0,i.Z)({InputProps:{classes:t}},e))}t.Z=(0,h.Z)((function(e){return(0,f.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},g.YI),g.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,n=e.onChange,s=e.value,f=e.id,x=e.name,h=e.type,g=void 0===h?"text":h,y=e.autoComplete,Z=void 0===y?"off":y,w=e.disabled,C=void 0!==w&&w,k=e.multiline,S=void 0!==k&&k,I=e.tooltip,T=void 0===I?"":I,P=e.index,O=void 0===P?0:P,L=e.error,z=void 0===L?"":L,E=e.required,F=void 0!==E&&E,R=e.placeholder,N=void 0===R?"":R,A=e.min,_=e.max,B=e.overlayId,M=e.overlayIcon,K=void 0===M?null:M,W=e.overlayObject,D=void 0===W?null:W,U=e.extraInputProps,H=void 0===U?{}:U,G=e.overlayAction,V=e.noLabelMinWidth,Y=void 0!==V&&V,q=e.pattern,X=void 0===q?"":q,Q=e.autoFocus,J=void 0!==Q&&Q,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ne=e.onKeyPress,re=e.onFocus,ie=e.onPaste,oe=(0,i.Z)({"data-index":O},H),se=(0,o.useState)(!1),ae=(0,r.Z)(se,2),le=ae[0],ce=ae[1];"number"===g&&A&&(oe.min=A),"number"===g&&_&&(oe.max=_),""!==X&&(oe.pattern=X);var ue=K,de=g;return"password"===g&&null===K&&(ue=le?(0,v.jsx)(d.Z,{}):(0,v.jsx)(p.Z,{}),de=le?"text":"password"),(0,v.jsx)(o.Fragment,{children:(0,v.jsxs)(a.ZP,{container:!0,className:(0,b.Z)(""!==te?te:"",""!==z?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,v.jsxs)(l.Z,{htmlFor:f,className:Y?$.noMinWidthLabel:$.inputLabel,children:[(0,v.jsxs)("span",{children:[t,F?"*":""]}),""!==T&&(0,v.jsx)("div",{className:$.tooltipContainer,children:(0,v.jsx)(c.Z,{title:T,placement:"top-start",children:(0,v.jsx)("div",{className:$.tooltip,children:(0,v.jsx)(m.byK,{})})})})]}),(0,v.jsxs)("div",{className:$.textBoxContainer,children:[(0,v.jsx)(j,{id:f,name:x,fullWidth:!0,value:s,autoFocus:J,disabled:C,onChange:n,type:de,multiline:S,autoComplete:Z,inputProps:oe,error:""!==z,helperText:z,placeholder:N,className:$.inputRebase,onKeyPress:ne,onFocus:re,onPaste:ie}),ue&&(0,v.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,v.jsx)(u.Z,{onClick:G?function(){G()}:function(){return ce(!le)},id:B,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ue})}),D&&(0,v.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:D})]})]})})}))},90673:function(e,t,n){"use strict";var r=n(1413),i=n(72791),o=n(61889),s=n(886),a=n(30829),l=n(20068),c=n(68096),u=n(58406),d=n(77865),p=n(11135),f=n(25787),x=n(23814),h=n(29945),g=n(80184),m=(0,f.Z)((function(e){return(0,p.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(s.ZP);t.Z=(0,f.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},x.YI),x.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var t=e.classes,n=e.id,r=e.name,s=e.onChange,p=e.options,f=e.label,x=e.tooltip,b=void 0===x?"":x,v=e.value,y=e.disabled,j=void 0!==y&&y;return(0,g.jsx)(i.Fragment,{children:(0,g.jsxs)(o.ZP,{item:!0,xs:12,className:t.fieldContainer,children:[""!==f&&(0,g.jsxs)(a.Z,{htmlFor:n,className:t.inputLabel,children:[(0,g.jsx)("span",{children:f}),""!==b&&(0,g.jsx)("div",{className:t.tooltipContainer,children:(0,g.jsx)(l.Z,{title:b,placement:"top-start",children:(0,g.jsx)("div",{className:t.tooltip,children:(0,g.jsx)(h.byK,{})})})})]}),(0,g.jsx)(c.Z,{fullWidth:!0,children:(0,g.jsx)(u.Z,{id:n,name:r,value:v,onChange:s,input:(0,g.jsx)(m,{}),disabled:j,children:p.map((function(e){return(0,g.jsx)(d.Z,{value:e.value,children:e.label},"select-".concat(r,"-").concat(e.label))}))})})]})})}))},51516:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return oe}});var r=n(29439),i=n(1413),o=n(72791),s=n(11135),a=n(23814),l=n(25787),c=n(64554),u=n(81207),d=n(78687),p=n(87995),f=n(81551),x=n(18073),h=n(43896),g=n(19847),m=n(61889),b=n(50533),v=n(29945),y=n(81159),j=n(21435),Z=n(74440),w=n(80184),C=function(e){var t=e.icon,n=void 0===t?null:t,r=e.title;return(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-start"},children:[n,(0,w.jsx)("div",{className:"title-text",children:r})]})},k=function(e){var t=e.email;return(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(Z.Z,{email:t}),(0,w.jsx)(m.ZP,{item:!0,xs:12,marginTop:"25px",children:(0,w.jsxs)(c.Z,{sx:{padding:"20px","& a":{color:"#2781B0",cursor:"pointer"}},children:["Login to"," ",(0,w.jsx)(b.Z,{href:"https://subnet.min.io",target:"_blank",style:{color:"#2781B0",cursor:"pointer"},children:"SUBNET"})," ","to avail support for this MinIO cluster"]})})]})},S=function(){var e="mc admin config set {alias} subnet proxy={proxy}",t=(0,o.useState)(!1),n=(0,r.Z)(t,2),i=n[0],s=n[1];return(0,w.jsx)(o.Fragment,{children:(0,w.jsxs)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",padding:"23px",marginTop:"40px",alignItems:"start",justifyContent:"space-between"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex","& .min-icon":{height:"22px",width:"22px"}},children:[(0,w.jsx)(v.ewm,{}),(0,w.jsx)("div",{style:{marginLeft:"10px",fontWeight:600},children:"Proxy Configuration"})]}),(0,w.jsxs)(c.Z,{sx:{marginTop:"10px",marginBottom:"10px",fontSize:"14px"},children:["For airgap/firewalled environments it is possible to"," ",(0,w.jsx)(b.Z,{style:{color:"#2781B0",cursor:"pointer"},href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con",target:"_blank",children:"configure a proxy"})," ","to connect to SUBNET ."]}),(0,w.jsx)(c.Z,{children:i&&(0,w.jsx)(j.Z,{disabled:!0,id:"subnetProxy",name:"subnetProxy",placeholder:"",onChange:function(){},label:"",value:e,overlayIcon:(0,w.jsx)(v.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(e)}})})]}),(0,w.jsx)(c.Z,{sx:{display:"flex"},children:(0,w.jsx)(y.Z,{value:"enableProxy",id:"enableProxy",name:"enableProxy",checked:i,onChange:function(e){s(e.target.checked)}})})]})})},I=n(3579),T=n(20165),P=n(30403),O=n(23508),L=n(9505),z=(0,l.Z)((function(e){return(0,s.Z)((0,i.Z)((0,i.Z)({sizedLabel:{minWidth:"75px"}},a.Bz),a.bK))}))((function(e){var t=e.open,n=e.closeModal,i=e.classes,s=e.onSet,a=(0,f.TL)(),l=(0,o.useState)(""),u=(0,r.Z)(l,2),d=u[0],x=u[1],h=(0,o.useState)(""),g=(0,r.Z)(h,2),m=g[0],b=g[1],y=(0,o.useState)(!1),Z=(0,r.Z)(y,2),C=Z[0],k=Z[1],S=(0,o.useState)(""),z=(0,r.Z)(S,2),E=z[0],F=z[1],R=(0,o.useState)(""),N=(0,r.Z)(R,2),A=N[0],_=N[1],B=(0,L.Z)((function(e){e.mfa_token?F(e.mfa_token):e.access_token?W("GET","/api/v1/subnet/apikey?token=".concat(e.access_token)):(s(e.apiKey),n())}),(function(e){a((0,p.Ih)(e)),n(),x(""),b(""),k(!1),F(""),_("")})),M=(0,r.Z)(B,2),K=M[0],W=M[1],D=function(){return(0,w.jsxs)(c.Z,{sx:{width:500},children:[(0,w.jsx)(j.Z,{className:i.spacerBottom,classes:{inputLabel:i.sizedLabel},id:"subnet-email",name:"subnet-email",onChange:function(e){return x(e.target.value)},label:"Email",value:d,overlayIcon:(0,w.jsx)(v.oyc,{})}),(0,w.jsx)(j.Z,{className:i.spacerBottom,classes:{inputLabel:i.sizedLabel},id:"subnet-password",name:"subnet-password",onChange:function(e){return b(e.target.value)},label:"Password",type:C?"text":"password",value:m,overlayIcon:C?(0,w.jsx)(T.Z,{}):(0,w.jsx)(I.Z,{}),overlayAction:function(){return k(!C)}})]})},U=function(){return(0,w.jsx)(c.Z,{sx:{display:"flex"},children:(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Two-Factor Authentication"}),(0,w.jsx)(c.Z,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,w.jsx)(c.Z,{sx:{flex:"1",marginTop:"30px"},children:(0,w.jsx)(j.Z,{overlayIcon:(0,w.jsx)(P.Z,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(e){return _(e.target.value)},placeholder:"",label:"",value:A})}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"}})]})})};return t?(0,w.jsx)(O.Z,{title:"Get API Key from SUBNET",confirmText:"Get API Key",isOpen:t,titleIcon:(0,w.jsx)(v.szr,{}),isLoading:K,cancelText:"Cancel",onConfirm:function(){""!==E?W("POST","/api/v1/subnet/login/mfa",{username:d,otp:A,mfa_token:E}):W("POST","/api/v1/subnet/login",{username:d,password:m})},onClose:n,confirmButtonProps:{variant:"callAction",disabled:!d||!m||K,hidden:!0},cancelButtonProps:{disabled:K},confirmationContent:""===E?D():U()}):null})),E=function(e){var t=e.icon,n=e.description;return(0,w.jsxs)(c.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,w.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},F=function(e){var t=e.hasMargin,n=void 0===t||t;return(0,w.jsxs)(c.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginLeft:{xs:"0px",sm:"0px",md:n?"30px":""},marginTop:{xs:"0px",sm:n?"30px":""}},children:[(0,w.jsxs)(c.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,w.jsx)(v.M9A,{}),(0,w.jsx)("div",{children:"Why should I register?"})]}),(0,w.jsx)(c.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:"Registering this cluster with the MinIO Subscription Network (SUBNET) provides the following benefits in addition to the commercial license and SLA backed support."}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,w.jsx)(E,{icon:(0,w.jsx)(v._qw,{}),description:"Call Home Monitoring"}),(0,w.jsx)(E,{icon:(0,w.jsx)(v.toM,{}),description:"Health Diagnostics"}),(0,w.jsx)(E,{icon:(0,w.jsx)(v.Fsz,{}),description:"Performance Analysis"}),(0,w.jsx)(E,{icon:(0,w.jsx)(v.EQx,{}),description:(0,w.jsx)(b.Z,{href:"https://min.io/signup?ref=con",target:"_blank",sx:{color:"#2781B0",cursor:"pointer"},children:"More Features"})})]})]})},R=n(57689),N=n(56087),A=(0,l.Z)((function(e){return(0,s.Z)((0,i.Z)({sizedLabel:{minWidth:"75px"}},a.bK))}))((function(e){var t=e.classes,n=e.registerEndpoint,i=(0,R.s0)(),s=(0,o.useState)(!1),a=(0,r.Z)(s,2),l=a[0],d=a[1],x=(0,o.useState)(""),h=(0,r.Z)(x,2),g=h[0],m=h[1],b=(0,o.useState)(!1),y=(0,r.Z)(b,2),Z=y[0],k=y[1],S=(0,o.useState)(!1),I=(0,r.Z)(S,2),T=I[0],P=I[1],O=(0,f.TL)(),L=(0,o.useCallback)((function(){if(!Z){k(!0);var e={apiKey:g};u.Z.invoke("POST",n,e).then((function(e){k(!1),e&&e.registered&&(O((0,p.cN)(!0)),i(N.gA.LICENSE))})).catch((function(e){O((0,p.Ih)(e)),k(!1),E()}))}}),[g,O,Z,n,i]);(0,o.useEffect)((function(){T&&L()}),[T,L]);var E=function(){m(""),P(!1)};return(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(C,{icon:(0,w.jsx)(v.dRy,{}),title:"Register cluster with API key"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:{xs:"column",md:"row"}},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Use your MinIO Subscription Network API Key to register this cluster."}),(0,w.jsxs)(c.Z,{sx:{flex:"1"},children:[(0,w.jsx)(j.Z,{className:t.spacerBottom,classes:{inputLabel:t.sizedLabel},id:"api-key",name:"api-key",onChange:function(e){return m(e.target.value)},label:"API Key",value:g}),(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,w.jsx)(v.zxk,{id:"get-from-subnet",variant:"regular",className:t.spacerRight,disabled:Z,onClick:function(){return d(!0)},label:"Get from SUBNET"}),(0,w.jsx)(v.zxk,{id:"register",type:"submit",variant:"callAction",disabled:Z||0===g.trim().length,onClick:function(){return L()},label:"Register"}),(0,w.jsx)(z,{open:l,closeModal:function(){return d(!1)},onSet:function(e){m(e),P(!0)}})]})]})]}),(0,w.jsx)(F,{})]})]})})),_=n(74165),B=n(15861),M=n(36825),K=n(96382),W=n(38442),D=(0,K.hg)("register/fetchLicenseInfo",function(){var e=(0,B.Z)((0,_.Z)().mark((function e(t,n){var r,i,o,s;return(0,_.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,i=n.dispatch,o=r(),s=(0,W.F)(N.C3,N.LC[N.gA.LICENSE],!0),!o.register.loadingLicenseInfo){e.next=6;break}return e.abrupt("return");case 6:s?(i((0,M.pI)(!0)),u.Z.invoke("GET","/api/v1/subnet/info").then((function(e){i((0,M.aO)(e)),i((0,M.Dr)(!0)),i((0,M.pI)(!1))})).catch((function(e){e.detailedError.toLowerCase()!=="License is not present".toLowerCase()&&e.detailedError.toLowerCase()!=="license not found".toLowerCase()&&i((0,p.Ih)(e)),i((0,M.Dr)(!1)),i((0,M.pI)(!1))}))):i((0,M.pI)(!1));case 7:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),U=(0,K.hg)("register/callRegister",function(){var e=(0,B.Z)((0,_.Z)().mark((function e(t,n){var r,i;return(0,_.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=n.dispatch,i={token:t.token,account_id:t.account_id},u.Z.invoke("POST","/api/v1/subnet/register",i).then((function(){r((0,M.K4)(!1)),r((0,p.cN)(!0)),r((0,M.jS)()),r(D())})).catch((function(e){r((0,p.Ih)(e)),r((0,M.K4)(!1))}));case 3:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),H=(0,K.hg)("register/subnetLoginWithMFA",function(){var e=(0,B.Z)((0,_.Z)().mark((function e(t,n){var r,i,o,s,a,l,c;return(0,_.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,n.rejectWithValue,i=n.dispatch,o=r(),s=o.register.subnetEmail,a=o.register.subnetMFAToken,l=o.register.subnetOTP,!o.register.loading){e.next=8;break}return e.abrupt("return");case 8:i((0,M.K4)(!0)),c={username:s,otp:l,mfa_token:a},u.Z.invoke("POST","/api/v1/subnet/login/mfa",c).then((function(e){i((0,M.K4)(!1)),e&&e.access_token&&e.organizations.length>0&&(1===e.organizations.length?i(U({token:e.access_token,account_id:e.organizations[0].accountId.toString()})):(i((0,M.t2)(e.access_token)),i((0,M.dl)(e.organizations)),i((0,M.wK)(e.organizations[0].accountId.toString()))))})).catch((function(e){i((0,p.Ih)(e)),i((0,M.K4)(!1)),i((0,M.Z7)(""))}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),G=(0,K.hg)("register/subnetLogin",function(){var e=(0,B.Z)((0,_.Z)().mark((function e(t,n){var r,i,o,s,a,l,c;return(0,_.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,n.rejectWithValue,i=n.dispatch,o=r(),s=o.register.license,a=o.register.subnetPassword,l=o.register.subnetEmail,!o.register.loading){e.next=8;break}return e.abrupt("return");case 8:i((0,M.K4)(!0)),c={username:l,password:a,apiKey:s},u.Z.invoke("POST","/api/v1/subnet/login",c).then((function(e){i((0,M.K4)(!1)),e&&e.registered?(i((0,M.jS)()),i(D())):e&&e.mfa_token?i((0,M.dK)(e.mfa_token)):e&&e.access_token&&e.organizations.length>0&&(i((0,M.t2)(e.access_token)),i((0,M.dl)(e.organizations)),i((0,M.wK)(e.organizations[0].accountId.toString())))})).catch((function(e){i((0,p.Ih)(e)),i((0,M.K4)(!1)),i((0,M.jS)())}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),V=n(27454),Y=n(78029),q=n.n(Y),X=n(57314),Q=function(){var e=(0,f.TL)(),t=(0,d.v9)((function(e){return e.register.subnetRegToken})),n=(0,d.v9)((function(e){return e.register.clusterRegistered})),i=(0,d.v9)((function(e){return e.register.licenseInfo})),s="https://subnet.min.io/cluster/register?token=".concat(t),a=(0,o.useState)(""),l=(0,r.Z)(a,2),u=l[0],x=l[1],h=(0,L.Z)((function(){e(D()),e((0,p.cN)(!0))}),(function(t){e((0,p.Ih)(t))})),g=(0,r.Z)(h,2),m=g[0],y=g[1];return(0,w.jsx)(o.Fragment,{children:(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:n&&i?(0,w.jsx)(k,{email:i.email}):(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(C,{icon:(0,w.jsx)(v.YL8,{}),title:"Register cluster in an Air-gap environment"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsx)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2",marginTop:"15px","& .step-number":{color:"#ffffff",height:"25px",width:"25px",background:"#081C42",marginRight:"10px",textAlign:"center",fontWeight:600,borderRadius:"50%"},"& .step-row":{fontSize:"16px",display:"flex",marginTop:"15px",marginBottom:"15px"}},children:(0,w.jsxs)(c.Z,{children:[(0,w.jsx)(c.Z,{className:"step-row",children:(0,w.jsx)("div",{className:"step-text",children:"Click on the link to register this cluster in SUBNET and get a License Key for this Air-Gap deployment"})}),(0,w.jsxs)(c.Z,{sx:{flex:"1",display:"flex",alignItems:"center",gap:3},children:[(0,w.jsx)(b.Z,{style:{color:"#2781B0",cursor:"pointer"},color:"inherit",href:s,target:"_blank",children:"https://subnet.min.io/cluster/register"}),(0,w.jsx)(V.Z,{tooltip:"Copy to Clipboard",children:(0,w.jsx)(q(),{text:s,children:(0,w.jsx)(v.zxk,{type:"button",id:"copy-ult-to-clip-board",icon:(0,w.jsx)(v.TIy,{}),color:"primary",variant:"regular"})})})]}),(0,w.jsx)("div",{style:{marginTop:"25px",fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:"Note: If this machine does not have internet connection, Copy paste the following URL in a browser where you access SUBNET and follow the instructions to complete the registration"}),(0,w.jsxs)(c.Z,{sx:{marginTop:"25px",display:"flex",flexDirection:"column"},children:[(0,w.jsxs)("label",{style:{fontWeight:"bold",marginBottom:"10px"},children:["Paste the License Key"," "]}),(0,w.jsx)(X.Z,{value:u,disabled:m,label:"",id:"licenseKey",name:"licenseKey",placeholder:"License Key",onChange:function(e){x(e.target.value)}})]}),(0,w.jsx)(c.Z,{sx:{marginTop:"25px"},children:(0,w.jsx)(v.zxk,{id:"apply-license-key",onClick:function(){y("PUT","/api/v1/configs/subnet",{key_values:[{key:"license",value:u}]})},variant:"callAction",disabled:!u||m,label:"Apply Cluster License"})})]})}),(0,w.jsx)(F,{})]})]})})})},J=function(){var e=(0,f.TL)(),t=(0,d.v9)((function(e){return e.register.subnetMFAToken})),n=(0,d.v9)((function(e){return e.register.subnetOTP})),r=(0,d.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Two-Factor Authentication"}),(0,w.jsx)(c.Z,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,w.jsx)(c.Z,{sx:{flex:"1",marginTop:"30px"},children:(0,w.jsx)(j.Z,{overlayIcon:(0,w.jsx)(P.Z,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(t){return e((0,M.Z7)(t.target.value))},placeholder:"",label:"",value:n})}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:(0,w.jsx)(v.zxk,{id:"verify",onClick:function(){return e(H())},disabled:r||0===n.trim().length||0===t.trim().length,variant:"callAction",label:"Verify"})})]}),(0,w.jsx)(F,{})]})},$=n(90673),ee=function(){var e=(0,f.TL)(),t=(0,d.v9)((function(e){return e.register.subnetAccessToken})),n=(0,d.v9)((function(e){return e.register.selectedSubnetOrganization})),r=(0,d.v9)((function(e){return e.register.subnetOrganizations})),i=(0,d.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(c.Z,{sx:{display:"flex"},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{marginTop:"15px",marginBottom:"15px","& .title-text":{marginLeft:"0px"}},children:(0,w.jsx)(C,{title:"Register MinIO cluster"})}),(0,w.jsxs)(c.Z,{children:[(0,w.jsx)($.Z,{id:"subnet-organization",name:"subnet-organization",onChange:function(t){return e((0,M.wK)(t.target.value))},label:"Select an organization",value:n,options:r.map((function(e){return{label:e.company,value:e.accountId.toString()}}))}),(0,w.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"15px"},children:(0,w.jsx)(v.zxk,{id:"register-cluster",onClick:function(){return function(){i||(e((0,M.K4)(!0)),t&&n&&e(U({token:t,account_id:n})))}},disabled:i||0===t.trim().length,variant:"callAction",label:"Register"})})]})]}),(0,w.jsx)(F,{})]})},te=(0,n(72455).Z)((function(e){return(0,s.Z)((0,i.Z)({sizedLabel:{minWidth:"75px"}},a.bK))})),ne=function(){var e=te(),t=(0,f.TL)(),n=(0,d.v9)((function(e){return e.register.subnetPassword})),r=(0,d.v9)((function(e){return e.register.subnetEmail})),i=(0,d.v9)((function(e){return e.register.showPassword})),s=(0,d.v9)((function(e){return e.register.loading}));return(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{"& .title-text":{marginLeft:"27px",fontWeight:600}},children:(0,w.jsx)(C,{icon:(0,w.jsx)(v.dRy,{}),title:"Online activation of MinIO Subscription Network License"})}),(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:{xs:"column",md:"row"}},children:[(0,w.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,w.jsx)(c.Z,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"30px",marginBottom:"30px"},children:"Use your MinIO Subscription Network login credentials to register this cluster."}),(0,w.jsxs)(c.Z,{sx:{flex:"1"},children:[(0,w.jsx)(j.Z,{className:e.spacerBottom,classes:{inputLabel:e.sizedLabel},id:"subnet-email",name:"subnet-email",onChange:function(e){return t((0,M.Ze)(e.target.value))},label:"Email",value:r,overlayIcon:(0,w.jsx)(v.oyc,{})}),(0,w.jsx)(j.Z,{className:e.spacerBottom,classes:{inputLabel:e.sizedLabel},id:"subnet-password",name:"subnet-password",onChange:function(e){return t((0,M.lr)(e.target.value))},label:"Password",type:i?"text":"password",value:n,overlayIcon:i?(0,w.jsx)(T.Z,{}):(0,w.jsx)(I.Z,{}),overlayAction:function(){return t((0,M.R5)(!i))}}),(0,w.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,w.jsx)(v.zxk,{id:"sign-up",type:"submit",className:e.spacerRight,variant:"regular",onClick:function(e){e.preventDefault(),window.open("https://min.io/signup?ref=con","_blank")},label:"Sign up"}),(0,w.jsx)(v.zxk,{id:"register-credentials",type:"submit",variant:"callAction",disabled:s||0===r.trim().length||0===n.trim().length,onClick:function(){return t(G())},label:"Register"})]})]})]}),(0,w.jsx)(F,{})]})]})},re=n(47974),ie=n(99670),oe=(0,l.Z)((function(e){return(0,s.Z)((0,i.Z)({sizedLabel:{minWidth:"75px"}},a.bK))}))((function(e){e.classes;var t=(0,f.TL)(),n=(0,d.v9)((function(e){return e.register.subnetMFAToken})),i=(0,d.v9)((function(e){return e.register.subnetAccessToken})),s=(0,d.v9)((function(e){return e.register.subnetRegToken})),a=(0,d.v9)((function(e){return e.register.subnetOrganizations})),l=(0,d.v9)((function(e){return e.register.loading})),m=(0,d.v9)((function(e){return e.register.loadingLicenseInfo})),b=(0,d.v9)((function(e){return e.register.clusterRegistered})),y=(0,d.v9)((function(e){return e.register.licenseInfo})),j=(0,d.v9)((function(e){return e.register.curTab})),Z=(0,o.useState)(!0),C=(0,r.Z)(Z,2),I=C[0],T=C[1];(0,o.useEffect)((function(){return function(){t((0,M.jS)())}}),[t]);(0,o.useEffect)((function(){I&&(t(D()),T(!1))}),[I,T,t]);var P=(0,w.jsx)(o.Fragment,{});P=i&&a.length>0?(0,w.jsx)(ee,{}):n?(0,w.jsx)(J,{}):(0,w.jsx)(ne,{});var O=(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:b&&y?(0,w.jsx)(k,{email:y.email}):(0,w.jsx)(A,{registerEndpoint:"/api/v1/subnet/login"})}),(0,w.jsx)(S,{})]}),L=(0,w.jsx)(Q,{}),z=(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(c.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:b&&y?(0,w.jsx)(k,{email:y.email}):P}),!b&&(0,w.jsx)(S,{})]}),E=m?(0,w.jsx)("div",{children:"Loading.."}):z;return(0,o.useEffect)((function(){t((0,p.Sc)("register"))}),[]),(0,w.jsxs)(o.Fragment,{children:[(0,w.jsx)(re.Z,{label:"Register to MinIO Subscription Network",actions:(0,w.jsx)(ie.Z,{})}),(0,w.jsxs)(v.Xgh,{children:[(0,w.jsxs)(x.Z,{value:j,onChange:function(e,n){t((0,M.m)(n))},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,w.jsx)(h.Z,{label:"Credentials",id:"simple-tab-0","aria-controls":"simple-tab-panel-0"}),(0,w.jsx)(h.Z,{label:"API Key",id:"simple-tab-1","aria-controls":"simple-tab-panel-1"}),(0,w.jsx)(h.Z,{label:"Air-Gap",id:"simple-tab-2","aria-controls":"simple-tab-panel-2",onClick:function(){l||s||(t((0,M.K4)(!0)),u.Z.invoke("GET","/api/v1/subnet/registration-token").then((function(e){t((0,M.K4)(!1)),e&&e.regToken&&t((0,M.wz)(e.regToken))})).catch((function(e){console.error(e),t((0,p.Ih)(e)),t((0,M.K4)(!1))})))}})]}),(0,w.jsx)(g.x,{index:0,value:j,children:E}),(0,w.jsx)(g.x,{index:1,value:j,children:O}),(0,w.jsx)(g.x,{index:2,value:j,children:L})]})]})}))},74440:function(e,t,n){"use strict";n(72791);var r=n(64554),i=n(29945),o=n(80184);t.Z=function(e){var t=e.email,n=void 0===t?"":t;return(0,o.jsxs)(r.Z,{sx:{height:"67px",color:"#ffffff",display:"flex",position:"relative",top:"-30px",left:"-32px",width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,o.jsxs)(r.Z,{className:"registered-box",children:[(0,o.jsx)(r.Z,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,o.jsxs)(r.Z,{className:"reg-badge-box",children:[(0,o.jsx)(i.SA,{}),(0,o.jsx)(r.Z,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,o.jsxs)(r.Z,{className:"registered-acc-box",sx:{alignItems:"center",justifyContent:"flex-start",display:{sm:"flex",xs:"none"}},children:[(0,o.jsx)(r.Z,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,o.jsx)(r.Z,{sx:{marginLeft:"8px",fontWeight:600},children:n})]})]})}},30403:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var i=r(n(45649)),o=n(80184),s=(0,i.default)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"}),"LockOutlined");t.Z=s},3579:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var i=r(n(45649)),o=n(80184),s=(0,i.default)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=s},20165:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var i=r(n(45649)),o=n(80184),s=(0,i.default)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=s},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return i.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return s.Z},debounce:function(){return a.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return j},unstable_useEnhancedEffect:function(){return x.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return g},useControlled:function(){return m.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return v.Z},useIsFocusVisible:function(){return y.Z}});var r=n(55902),i=n(14036),o=n(31260),s=n(76189),a=n(83199);var l=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var p=function(e,t){return function(){return null}},f=n(62971).Z,x=n(40162),h=n(67384);var g=function(e,t,n,r,i){return null},m=n(98278),b=n(89683),v=n(42071),y=n(23031),j={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(72791);var i=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},76998:function(e,t,n){"use strict";var r=n(42458),i={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,s,a,l,c,u=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),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(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=i[t.format]||i.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(c),a.selectNodeContents(c),l.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),o=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(o,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(a):l.removeAllRanges()),c&&document.body.removeChild(c),s()}return u}},568:function(e,t,n){"use strict";function r(e){return r="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},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var i=a(n(72791)),o=a(n(76998)),s=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function d(e,t){for(var n=0;n.\n\nimport React from \"react\";\nimport { Grid, InputLabel, TextField, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CommentBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: 14,\n margin: 0,\n alignItems: \"flex-start\",\n paddingTop: \"20px\",\n flexWrap: \"wrap\",\n display: \"flex\",\n },\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n cssOutlinedInput: {\n borderColor: \"#EAEAEA\",\n padding: 16,\n },\n rootContainer: {\n \"& .MuiOutlinedInput-inputMultiline\": {\n ...fieldBasic.inputLabel,\n fontSize: 13,\n minHeight: 150,\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#07193E\",\n borderWidth: 1,\n },\n \"& textarea\": {\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n \"&:placeholder\": {\n color: \"#858585\",\n opacity: 1,\n fontWeight: 400,\n },\n },\n },\n });\n\nconst CommentBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n classes,\n}: CommentBoxProps) => {\n let inputProps: any = { \"data-index\": index };\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n\n
\n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(CommentBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n }),\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","import { Box, Grid, Link } from \"@mui/material\";\nimport { Fragment, useState } from \"react\";\nimport { CopyIcon, SettingsIcon } from \"mds\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport RegistrationStatusBanner from \"./RegistrationStatusBanner\";\n\nexport const FormTitle = ({\n icon = null,\n title,\n}: {\n icon?: any;\n title: any;\n}) => {\n return (\n \n {icon}\n
\n \n \n For airgap/firewalled environments it is possible to{\" \"}\n \n configure a proxy\n {\" \"}\n to connect to SUBNET .\n \n \n {displaySubnetProxy && (\n {}}\n label=\"\"\n value={proxyConfigurationCommand}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() =>\n navigator.clipboard.writeText(proxyConfigurationCommand)\n }\n />\n )}\n \n \n \n ) => {\n setDisplaySubnetProxy(event.target.checked);\n }}\n />\n \n \n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport LockOutlinedIcon from \"@mui/icons-material/LockOutlined\";\nimport {\n containerForHeader,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport React, { useState } from \"react\";\nimport { InfoIcon, UsersIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { Box } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...containerForHeader,\n ...spacingUtils,\n });\n\ninterface IGetApiKeyModalProps {\n open: boolean;\n closeModal: () => void;\n onSet: (apiKey: string) => void;\n classes: any;\n}\n\nconst GetApiKeyModal = ({\n open,\n closeModal,\n classes,\n onSet,\n}: IGetApiKeyModalProps) => {\n const dispatch = useAppDispatch();\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [showPassword, setShowPassword] = useState(false);\n const [mfaToken, setMfaToken] = useState(\"\");\n const [subnetOTP, setSubnetOTP] = useState(\"\");\n\n const onError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeModal();\n setEmail(\"\");\n setPassword(\"\");\n setShowPassword(false);\n setMfaToken(\"\");\n setSubnetOTP(\"\");\n };\n\n const onSuccess = (res: any) => {\n if (res.mfa_token) {\n setMfaToken(res.mfa_token);\n } else if (res.access_token) {\n invokeApi(\"GET\", `/api/v1/subnet/apikey?token=${res.access_token}`);\n } else {\n onSet(res.apiKey);\n closeModal();\n }\n };\n\n const [isLoading, invokeApi] = useApi(onSuccess, onError);\n\n const onConfirm = () => {\n if (mfaToken !== \"\") {\n invokeApi(\"POST\", \"/api/v1/subnet/login/mfa\", {\n username: email,\n otp: subnetOTP,\n mfa_token: mfaToken,\n });\n } else {\n invokeApi(\"POST\", \"/api/v1/subnet/login\", { username: email, password });\n }\n };\n\n const getDialogContent = () => {\n if (mfaToken === \"\") {\n return getCredentialsDialog();\n }\n return getMFADialog();\n };\n\n const getCredentialsDialog = () => {\n return (\n \n ) =>\n setEmail(event.target.value)\n }\n label=\"Email\"\n value={email}\n overlayIcon={}\n />\n ) =>\n setPassword(event.target.value)\n }\n label=\"Password\"\n type={showPassword ? \"text\" : \"password\"}\n value={password}\n overlayIcon={\n showPassword ? : \n }\n overlayAction={() => setShowPassword(!showPassword)}\n />\n \n );\n };\n\n const getMFADialog = () => {\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your\n email address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n setSubnetOTP(event.target.value)\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n \n \n );\n };\n\n return open ? (\n }\n isLoading={isLoading}\n cancelText={\"Cancel\"}\n onConfirm={onConfirm}\n onClose={closeModal}\n confirmButtonProps={{\n variant: \"callAction\",\n disabled: !email || !password || isLoading,\n hidden: true,\n }}\n cancelButtonProps={{\n disabled: isLoading,\n }}\n confirmationContent={getDialogContent()}\n />\n ) : null;\n};\n\nexport default withStyles(styles)(GetApiKeyModal);\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, Link } from \"@mui/material\";\nimport {\n CallHomeFeatureIcon,\n DiagnosticsFeatureIcon,\n ExtraFeaturesIcon,\n HelpIconFilled,\n PerformanceFeatureIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string | React.ReactNode;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n \n \n Registering this cluster with the MinIO Subscription Network (SUBNET)\n provides the following benefits in addition to the commercial license\n and SLA backed support.\n \n\n \n }\n description={`Call Home Monitoring`}\n />\n }\n description={`Health Diagnostics`}\n />\n }\n description={`Performance Analysis`}\n />\n }\n description={\n \n More Features\n \n }\n />\n \n \n );\n};\n\nexport default RegisterHelpBox;\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, useCallback, useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, OnlineRegistrationIcon } from \"mds\";\nimport { FormTitle } from \"./utils\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport GetApiKeyModal from \"./GetApiKeyModal\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { SubnetLoginRequest, SubnetLoginResponse } from \"../License/types\";\nimport api from \"../../../common/api\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\n\ninterface IApiKeyRegister {\n classes: any;\n registerEndpoint: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n });\n\nconst ApiKeyRegister = ({ classes, registerEndpoint }: IApiKeyRegister) => {\n const navigate = useNavigate();\n\n const [showApiKeyModal, setShowApiKeyModal] = useState(false);\n const [apiKey, setApiKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [fromModal, setFromModal] = useState(false);\n const dispatch = useAppDispatch();\n\n const onRegister = useCallback(() => {\n if (loading) {\n return;\n }\n setLoading(true);\n let request: SubnetLoginRequest = { apiKey };\n api\n .invoke(\"POST\", registerEndpoint, request)\n .then((resp: SubnetLoginResponse) => {\n setLoading(false);\n if (resp && resp.registered) {\n dispatch(setServerNeedsRestart(true));\n navigate(IAM_PAGES.LICENSE);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n reset();\n });\n }, [apiKey, dispatch, loading, registerEndpoint, navigate]);\n\n useEffect(() => {\n if (fromModal) {\n onRegister();\n }\n }, [fromModal, onRegister]);\n\n const reset = () => {\n setApiKey(\"\");\n setFromModal(false);\n };\n\n return (\n \n \n }\n title={`Register cluster with API key`}\n />\n \n \n \n \n Use your MinIO Subscription Network API Key to register this\n cluster.\n \n \n ) =>\n setApiKey(event.target.value)\n }\n label=\"API Key\"\n value={apiKey}\n />\n\n \n setShowApiKeyModal(true)}\n label={\"Get from SUBNET\"}\n />\n onRegister()}\n label={\"Register\"}\n />\n setShowApiKeyModal(false)}\n onSet={(value) => {\n setApiKey(value);\n setFromModal(true);\n }}\n />\n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(ApiKeyRegister);\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 {\n resetRegisterForm,\n setClusterRegistered,\n setLicenseInfo,\n setLoading,\n setLoadingLicenseInfo,\n setSelectedSubnetOrganization,\n setSubnetAccessToken,\n setSubnetMFAToken,\n setSubnetOrganizations,\n setSubnetOTP,\n} from \"./registerSlice\";\nimport api from \"../../../common/api\";\nimport {\n SubnetInfo,\n SubnetLoginRequest,\n SubnetLoginResponse,\n SubnetLoginWithMFARequest,\n SubnetRegisterRequest,\n} from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PAGES_PERMISSIONS,\n} from \"../../../common/SecureComponent/permissions\";\n\nexport const fetchLicenseInfo = createAsyncThunk(\n \"register/fetchLicenseInfo\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n const getSubnetInfo = hasPermission(\n CONSOLE_UI_RESOURCE,\n IAM_PAGES_PERMISSIONS[IAM_PAGES.LICENSE],\n true,\n );\n\n const loadingLicenseInfo = state.register.loadingLicenseInfo;\n\n if (loadingLicenseInfo) {\n return;\n }\n if (getSubnetInfo) {\n dispatch(setLoadingLicenseInfo(true));\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n dispatch(setLicenseInfo(res));\n dispatch(setClusterRegistered(true));\n dispatch(setLoadingLicenseInfo(false));\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.detailedError.toLowerCase() !==\n \"License is not present\".toLowerCase() &&\n err.detailedError.toLowerCase() !==\n \"license not found\".toLowerCase()\n ) {\n dispatch(setErrorSnackMessage(err));\n }\n dispatch(setClusterRegistered(false));\n dispatch(setLoadingLicenseInfo(false));\n });\n } else {\n dispatch(setLoadingLicenseInfo(false));\n }\n },\n);\n\nexport interface ClassRegisterArgs {\n token: string;\n account_id: string;\n}\n\nexport const callRegister = createAsyncThunk(\n \"register/callRegister\",\n async (args: ClassRegisterArgs, { dispatch }) => {\n const request: SubnetRegisterRequest = {\n token: args.token,\n account_id: args.account_id,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/register\", request)\n .then(() => {\n dispatch(setLoading(false));\n dispatch(setServerNeedsRestart(true));\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n },\n);\n\nexport const subnetLoginWithMFA = createAsyncThunk(\n \"register/subnetLoginWithMFA\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const subnetEmail = state.register.subnetEmail;\n const subnetMFAToken = state.register.subnetMFAToken;\n const subnetOTP = state.register.subnetOTP;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n const request: SubnetLoginWithMFARequest = {\n username: subnetEmail,\n otp: subnetOTP,\n mfa_token: subnetMFAToken,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login/mfa\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.access_token && resp.organizations.length > 0) {\n if (resp.organizations.length === 1) {\n dispatch(\n callRegister({\n token: resp.access_token,\n account_id: resp.organizations[0].accountId.toString(),\n }),\n );\n } else {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(setSubnetOTP(\"\"));\n });\n },\n);\n\nexport const subnetLogin = createAsyncThunk(\n \"register/subnetLogin\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const license = state.register.license;\n const subnetPassword = state.register.subnetPassword;\n const subnetEmail = state.register.subnetEmail;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n let request: SubnetLoginRequest = {\n username: subnetEmail,\n password: subnetPassword,\n apiKey: license,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.registered) {\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n } else if (resp && resp.mfa_token) {\n dispatch(setSubnetMFAToken(resp.mfa_token));\n } else if (resp && resp.access_token && resp.organizations.length > 0) {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(resetRegisterForm());\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Box, Link } from \"@mui/material\";\nimport { ClusterRegistered, FormTitle } from \"./utils\";\nimport { Button, CopyIcon, OfflineRegistrationIcon } from \"mds\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport CommentBoxWrapper from \"../Common/FormComponents/CommentBoxWrapper/CommentBoxWrapper\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\n\nconst OfflineRegistration = () => {\n const dispatch = useAppDispatch();\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n\n const offlineRegUrl = `https://subnet.min.io/cluster/register?token=${subnetRegToken}`;\n\n const [licenseKey, setLicenseKey] = useState(\"\");\n\n const [isSaving, invokeApplyLicenseApi] = useApi(\n () => {\n dispatch(fetchLicenseInfo());\n dispatch(setServerNeedsRestart(true));\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const applyAirGapLicense = () => {\n invokeApplyLicenseApi(\"PUT\", `/api/v1/configs/subnet`, {\n key_values: [{ key: \"license\", value: licenseKey }],\n });\n };\n\n return (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n \n }\n title={`Register cluster in an Air-gap environment`}\n />\n \n\n \n \n \n \n
\n Click on the link to register this cluster in SUBNET and\n get a License Key for this Air-Gap deployment\n
\n Note: If this machine does not have internet connection,\n Copy paste the following URL in a browser where you access\n SUBNET and follow the instructions to complete the\n registration\n
\n\n \n \n {\n setLicenseKey(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default OfflineRegistration;\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 { Box } from \"@mui/material\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport LockOutlinedIcon from \"@mui/icons-material/LockOutlined\";\nimport { setSubnetOTP } from \"./registerSlice\";\nimport { Button } from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { subnetLoginWithMFA } from \"./registerThunks\";\n\nconst SubnetMFAToken = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetOTP = useSelector((state: AppState) => state.register.subnetOTP);\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your email\n address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n dispatch(setSubnetOTP(event.target.value))\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n dispatch(subnetLoginWithMFA())}\n disabled={\n loading ||\n subnetOTP.trim().length === 0 ||\n subnetMFAToken.trim().length === 0\n }\n variant=\"callAction\"\n label={\"Verify\"}\n />\n \n \n\n \n \n );\n};\nexport default SubnetMFAToken;\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 { Box } from \"@mui/material\";\nimport { FormTitle } from \"./utils\";\nimport SelectWrapper from \"../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { setLoading, setSelectedSubnetOrganization } from \"./registerSlice\";\nimport { Button } from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { callRegister } from \"./registerThunks\";\n\nconst ClusterRegistrationForm = () => {\n const dispatch = useAppDispatch();\n\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n const selectedSubnetOrganization = useSelector(\n (state: AppState) => state.register.selectedSubnetOrganization,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n \n \n \n \n \n dispatch(setSelectedSubnetOrganization(e.target.value as string))\n }\n label=\"Select an organization\"\n value={selectedSubnetOrganization}\n options={subnetOrganizations.map((organization) => ({\n label: organization.company,\n value: organization.accountId.toString(),\n }))}\n />\n \n () => {\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n if (subnetAccessToken && selectedSubnetOrganization) {\n dispatch(\n callRegister({\n token: subnetAccessToken,\n account_id: selectedSubnetOrganization,\n }),\n );\n }\n }}\n disabled={loading || subnetAccessToken.trim().length === 0}\n variant=\"callAction\"\n label={\"Register\"}\n />\n \n \n \n \n \n );\n};\n\nexport default ClusterRegistrationForm;\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 } from \"@mui/material\";\nimport { FormTitle } from \"./utils\";\nimport { Button, OnlineRegistrationIcon, UsersIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport {\n setShowPassword,\n setSubnetEmail,\n setSubnetPassword,\n} from \"./registerSlice\";\nimport { subnetLogin } from \"./registerThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n }),\n);\n\nconst OnlineRegistration = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const subnetPassword = useSelector(\n (state: AppState) => state.register.subnetPassword,\n );\n const subnetEmail = useSelector(\n (state: AppState) => state.register.subnetEmail,\n );\n const showPassword = useSelector(\n (state: AppState) => state.register.showPassword,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n \n \n }\n title={`Online activation of MinIO Subscription Network License`}\n />\n \n \n \n \n Use your MinIO Subscription Network login credentials to register\n this cluster.\n \n \n ) =>\n dispatch(setSubnetEmail(event.target.value))\n }\n label=\"Email\"\n value={subnetEmail}\n overlayIcon={}\n />\n ) =>\n dispatch(setSubnetPassword(event.target.value))\n }\n label=\"Password\"\n type={showPassword ? \"text\" : \"password\"}\n value={subnetPassword}\n overlayIcon={\n showPassword ? : \n }\n overlayAction={() => dispatch(setShowPassword(!showPassword))}\n />\n\n \n {\n e.preventDefault();\n window.open(`https://min.io/signup?ref=con`, \"_blank\");\n }}\n label={\"Sign up\"}\n />\n dispatch(subnetLogin())}\n label={\"Register\"}\n />\n \n \n \n \n \n \n );\n};\n\nexport default OnlineRegistration;\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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { spacingUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../common/api\";\n\nimport { SubnetRegTokenResponse } from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useSelector } from \"react-redux\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { TabPanel } from \"../../shared/tabs\";\nimport { ClusterRegistered, ProxyConfiguration } from \"./utils\";\nimport ApiKeyRegister from \"./ApiKeyRegister\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n resetRegisterForm,\n setCurTab,\n setLoading,\n setSubnetRegToken,\n} from \"./registerSlice\";\nimport OfflineRegistration from \"./OfflineRegistration\";\nimport SubnetMFAToken from \"./SubnetMFAToken\";\nimport ClusterRegistrationForm from \"./ClusterRegistrationForm\";\nimport OnlineRegistration from \"./OnlineRegistration\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { PageLayout } from \"mds\";\nimport HelpMenu from \"../HelpMenu\";\n\ninterface IRegister {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizedLabel: {\n minWidth: \"75px\",\n },\n ...spacingUtils,\n });\n\nconst Register = ({ classes }: IRegister) => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n\n const loading = useSelector((state: AppState) => state.register.loading);\n const loadingLicenseInfo = useSelector(\n (state: AppState) => state.register.loadingLicenseInfo,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n const curTab = useSelector((state: AppState) => state.register.curTab);\n\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n\n useEffect(() => {\n // when unmounted, reset\n return () => {\n dispatch(resetRegisterForm());\n };\n }, [dispatch]);\n\n const fetchSubnetRegToken = () => {\n if (loading || subnetRegToken) {\n return;\n }\n dispatch(setLoading(true));\n api\n .invoke(\"GET\", \"/api/v1/subnet/registration-token\")\n .then((resp: SubnetRegTokenResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.regToken) {\n dispatch(setSubnetRegToken(resp.regToken));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n };\n\n useEffect(() => {\n if (initialLicenseLoading) {\n dispatch(fetchLicenseInfo());\n setInitialLicenseLoading(false);\n }\n }, [initialLicenseLoading, setInitialLicenseLoading, dispatch]);\n\n let clusterRegistrationForm: JSX.Element = ;\n\n if (subnetAccessToken && subnetOrganizations.length > 0) {\n clusterRegistrationForm = ;\n } else if (subnetMFAToken) {\n clusterRegistrationForm = ;\n } else {\n clusterRegistrationForm = ;\n }\n\n const apiKeyRegistration = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n )}\n \n \n \n );\n\n const offlineRegistration = ;\n\n const regUi = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n clusterRegistrationForm\n )}\n \n\n {!clusterRegistered && }\n \n );\n\n const loadingUi =
Loading..
;\n const uiToShow = loadingLicenseInfo ? loadingUi : regUi;\n\n useEffect(() => {\n dispatch(setHelpName(\"register\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n , newValue: number) => {\n dispatch(setCurTab(newValue));\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n fetchSubnetRegToken()}\n />\n \n\n \n {uiToShow}\n \n \n {apiKeyRegistration}\n \n \n {offlineRegistration}\n \n \n \n );\n};\n\nexport default withStyles(styles)(Register);\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { VerifiedIcon } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\n}), 'LockOutlined');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\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","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","tooltipHelper","inputLabel","fontSize","margin","alignItems","paddingTop","flexWrap","display","textBoxContainer","flexGrow","position","cssOutlinedInput","borderColor","padding","rootContainer","minHeight","borderWidth","color","fontWeight","opacity","_ref","label","onChange","value","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","classes","inputProps","_jsx","React","children","_jsxs","Grid","item","xs","className","concat","fieldContainer","errorInField","InputLabel","htmlFor","tooltipContainer","Tooltip","title","placement","HelpIcon","TextField","fullWidth","multiline","rows","helperText","InputLabelProps","shrink","InputProps","notchedOutline","root","variant","inputStyles","makeStyles","inputFieldStyles","InputField","props","overlayAction","right","top","maxWidth","maxHeight","_ref$type","type","_ref$autoComplete","autoComplete","_ref$multiline","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","container","clsx","inputBoxContainer","noMinWidthLabel","inputRebase","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","SelectStyled","height","lineHeight","marginTop","spacing","input","border","borderRadius","backgroundColor","InputBase","flexFlow","options","FormControl","Select","map","option","MenuItem","FormTitle","_ref$icon","icon","Box","sx","justifyContent","ClusterRegistered","_ref2","email","Fragment","RegistrationStatusBanner","cursor","Link","href","target","style","ProxyConfiguration","proxyConfigurationCommand","displaySubnetProxy","setDisplaySubnetProxy","width","SettingsIcon","marginLeft","marginBottom","InputBoxWrapper","CopyIcon","readOnly","navigator","clipboard","writeText","FormSwitchWrapper","checked","event","sizedLabel","minWidth","containerForHeader","spacingUtils","open","closeModal","onSet","dispatch","useAppDispatch","setEmail","_useState3","_useState4","password","setPassword","_useState5","_useState6","showPassword","setShowPassword","_useState7","_useState8","mfaToken","setMfaToken","_useState9","_useState10","subnetOTP","setSubnetOTP","_useApi","useApi","res","mfa_token","access_token","invokeApi","apiKey","err","setErrorSnackMessage","_useApi2","isLoading","getCredentialsDialog","spacerBottom","UsersIcon","getMFADialog","flex","LockOutlinedIcon","ConfirmDialog","confirmText","isOpen","titleIcon","InfoIcon","cancelText","onConfirm","username","otp","onClose","confirmButtonProps","hidden","cancelButtonProps","confirmationContent","FeatureItem","description","marginRight","fontStyle","_ref2$hasMargin","hasMargin","sm","md","HelpIconFilled","CallHomeFeatureIcon","DiagnosticsFeatureIcon","PerformanceFeatureIcon","ExtraFeaturesIcon","registerEndpoint","navigate","useNavigate","showApiKeyModal","setShowApiKeyModal","setApiKey","loading","setLoading","fromModal","setFromModal","onRegister","useCallback","request","api","invoke","then","resp","registered","setServerNeedsRestart","IAM_PAGES","LICENSE","catch","reset","useEffect","OnlineRegistrationIcon","Button","spacerRight","trim","length","GetApiKeyModal","RegisterHelpBox","fetchLicenseInfo","createAsyncThunk","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_","getState","state","getSubnetInfo","wrap","_context","prev","next","hasPermission","CONSOLE_UI_RESOURCE","IAM_PAGES_PERMISSIONS","register","loadingLicenseInfo","abrupt","setLoadingLicenseInfo","setLicenseInfo","setClusterRegistered","detailedError","toLowerCase","stop","_x","_x2","apply","arguments","callRegister","_ref4","_callee2","args","_ref3","_context2","token","account_id","resetRegisterForm","_x3","_x4","subnetLoginWithMFA","_ref6","_callee3","_ref5","subnetEmail","subnetMFAToken","_context3","rejectWithValue","organizations","accountId","toString","setSubnetAccessToken","setSubnetOrganizations","setSelectedSubnetOrganization","_x5","_x6","subnetLogin","_ref8","_callee4","_ref7","license","subnetPassword","_context4","setSubnetMFAToken","_x7","_x8","subnetRegToken","useSelector","clusterRegistered","licenseInfo","offlineRegUrl","licenseKey","setLicenseKey","isSaving","invokeApplyLicenseApi","OfflineRegistrationIcon","background","textAlign","gap","TooltipWrapper","CopyToClipboard","text","flexDirection","CommentBoxWrapper","e","key_values","key","subnetAccessToken","selectedSubnetOrganization","subnetOrganizations","SelectWrapper","organization","company","useStyles","setSubnetEmail","setSubnetPassword","preventDefault","window","curTab","initialLicenseLoading","setInitialLicenseLoading","clusterRegistrationForm","ClusterRegistrationForm","SubnetMFAToken","OnlineRegistration","apiKeyRegistration","ApiKeyRegister","offlineRegistration","OfflineRegistration","regUi","uiToShow","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","newValue","setCurTab","indicatorColor","textColor","scrollButtons","Tab","regToken","setSubnetRegToken","console","TabPanel","_ref$email","left","fill","VerifiedIcon","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","deselectCurrent","clipboardToIE11Formatting","module","debug","message","reselectPrevious","range","selection","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","warn","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","_react","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","i","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_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","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1520.af5d5afd.chunk.js b/portal-ui/build/static/js/1520.af5d5afd.chunk.js
deleted file mode 100644
index 10dbf3c2f..000000000
--- a/portal-ui/build/static/js/1520.af5d5afd.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1520],{85523:function(e,r,o){o.d(r,{Z:function(){return S}});var a=o(4942),n=o(63366),t=o(87462),l=o(72791),i=o(28182),c=o(94419),s=o(52930),u=o(20890),d=o(14036),m=o(66934),f=o(31402),p=o(75878),v=o(21217);function Z(e){return(0,v.Z)("MuiFormControlLabel",e)}var h=(0,p.Z)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),b=o(76147),g=o(80184),w=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],C=(0,m.ZP)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[(0,a.Z)({},"& .".concat(h.label),r.label),r.root,r["labelPlacement".concat((0,d.Z)(o.labelPlacement))]]}})((function(e){var r=e.theme,o=e.ownerState;return(0,t.Z)((0,a.Z)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16},"&.".concat(h.disabled),{cursor:"default"}),"start"===o.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===o.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===o.labelPlacement&&{flexDirection:"column",marginLeft:16},(0,a.Z)({},"& .".concat(h.label),(0,a.Z)({},"&.".concat(h.disabled),{color:(r.vars||r).palette.text.disabled})))})),k=(0,m.ZP)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:function(e,r){return r.asterisk}})((function(e){var r=e.theme;return(0,a.Z)({},"&.".concat(h.error),{color:(r.vars||r).palette.error.main})})),S=l.forwardRef((function(e,r){var o,a,m=(0,f.Z)({props:e,name:"MuiFormControlLabel"}),p=m.className,v=m.componentsProps,h=void 0===v?{}:v,S=m.control,x=m.disabled,P=m.disableTypography,y=m.label,R=m.labelPlacement,M=void 0===R?"end":R,j=m.required,N=m.slotProps,F=void 0===N?{}:N,z=(0,n.Z)(m,w),q=(0,s.Z)(),L=null!=(o=null!=x?x:S.props.disabled)?o:null==q?void 0:q.disabled,I=null!=j?j:S.props.required,D={disabled:L,required:I};["checked","name","onChange","value","inputRef"].forEach((function(e){"undefined"===typeof S.props[e]&&"undefined"!==typeof m[e]&&(D[e]=m[e])}));var G=(0,b.Z)({props:m,muiFormControl:q,states:["error"]}),E=(0,t.Z)({},m,{disabled:L,labelPlacement:M,required:I,error:G.error}),O=function(e){var r=e.classes,o=e.disabled,a=e.labelPlacement,n=e.error,t=e.required,l={root:["root",o&&"disabled","labelPlacement".concat((0,d.Z)(a)),n&&"error",t&&"required"],label:["label",o&&"disabled"],asterisk:["asterisk",n&&"error"]};return(0,c.Z)(l,Z,r)}(E),T=null!=(a=F.typography)?a:h.typography,B=y;return null==B||B.type===u.Z||P||(B=(0,g.jsx)(u.Z,(0,t.Z)({component:"span"},T,{className:(0,i.Z)(O.label,null==T?void 0:T.className),children:B}))),(0,g.jsxs)(C,(0,t.Z)({className:(0,i.Z)(O.root,p),ownerState:E,ref:r},z,{children:[l.cloneElement(S,D),B,I&&(0,g.jsxs)(k,{ownerState:E,"aria-hidden":!0,className:O.asterisk,children:["\u2009","*"]})]}))}))},61419:function(e,r,o){o.d(r,{Z:function(){return z}});var a=o(4942),n=o(63366),t=o(87462),l=o(72791),i=o(28182),c=o(94419),s=o(12065),u=o(97278),d=o(31402),m=o(76189),f=o(80184),p=(0,m.Z)((0,f.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),v=(0,m.Z)((0,f.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked"),Z=o(66934),h=(0,Z.ZP)("span")({position:"relative",display:"flex"}),b=(0,Z.ZP)(p)({transform:"scale(1)"}),g=(0,Z.ZP)(v)((function(e){var r=e.theme,o=e.ownerState;return(0,t.Z)({left:0,position:"absolute",transform:"scale(0)",transition:r.transitions.create("transform",{easing:r.transitions.easing.easeIn,duration:r.transitions.duration.shortest})},o.checked&&{transform:"scale(1)",transition:r.transitions.create("transform",{easing:r.transitions.easing.easeOut,duration:r.transitions.duration.shortest})})}));var w=function(e){var r=e.checked,o=void 0!==r&&r,a=e.classes,n=void 0===a?{}:a,l=e.fontSize,i=(0,t.Z)({},e,{checked:o});return(0,f.jsxs)(h,{className:n.root,ownerState:i,children:[(0,f.jsx)(b,{fontSize:l,className:n.background,ownerState:i}),(0,f.jsx)(g,{fontSize:l,className:n.dot,ownerState:i})]})},C=o(14036),k=o(31260),S=o(18672);var x=o(75878),P=o(21217);function y(e){return(0,P.Z)("MuiRadio",e)}var R=(0,x.Z)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary"]),M=["checked","checkedIcon","color","icon","name","onChange","size","className"],j=(0,Z.ZP)(u.Z,{shouldForwardProp:function(e){return(0,Z.FO)(e)||"classes"===e},name:"MuiRadio",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[r.root,r["color".concat((0,C.Z)(o.color))]]}})((function(e){var r=e.theme,o=e.ownerState;return(0,t.Z)({color:(r.vars||r).palette.text.secondary},!o.disableRipple&&{"&:hover":{backgroundColor:r.vars?"rgba(".concat("default"===o.color?r.vars.palette.action.activeChannel:r.vars.palette[o.color].mainChannel," / ").concat(r.vars.palette.action.hoverOpacity,")"):(0,s.Fq)("default"===o.color?r.palette.action.active:r.palette[o.color].main,r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==o.color&&(0,a.Z)({},"&.".concat(R.checked),{color:(r.vars||r).palette[o.color].main}),(0,a.Z)({},"&.".concat(R.disabled),{color:(r.vars||r).palette.action.disabled}))}));var N=(0,f.jsx)(w,{checked:!0}),F=(0,f.jsx)(w,{}),z=l.forwardRef((function(e,r){var o,a,s,u,m=(0,d.Z)({props:e,name:"MuiRadio"}),p=m.checked,v=m.checkedIcon,Z=void 0===v?N:v,h=m.color,b=void 0===h?"primary":h,g=m.icon,w=void 0===g?F:g,x=m.name,P=m.onChange,R=m.size,z=void 0===R?"medium":R,q=m.className,L=(0,n.Z)(m,M),I=(0,t.Z)({},m,{color:b,size:z}),D=function(e){var r=e.classes,o=e.color,a={root:["root","color".concat((0,C.Z)(o))]};return(0,t.Z)({},r,(0,c.Z)(a,y,r))}(I),G=l.useContext(S.Z),E=p,O=(0,k.Z)(P,G&&G.onChange),T=x;return G&&("undefined"===typeof E&&(s=G.value,E="object"===typeof(u=m.value)&&null!==u?s===u:String(s)===String(u)),"undefined"===typeof T&&(T=G.name)),(0,f.jsx)(j,(0,t.Z)({type:"radio",icon:l.cloneElement(w,{fontSize:null!=(o=F.props.fontSize)?o:z}),checkedIcon:l.cloneElement(Z,{fontSize:null!=(a=N.props.fontSize)?a:z}),ownerState:I,classes:D,name:T,checked:E,onChange:O,ref:r,className:(0,i.Z)(D.root,q)},L))}))},10765:function(e,r,o){o.d(r,{Z:function(){return P}});var a=o(29439),n=o(87462),t=o(63366),l=o(72791),i=o(28182),c=o(94419),s=o(66934),u=o(31402),d=o(75878),m=o(21217);function f(e){return(0,m.Z)("MuiFormGroup",e)}(0,d.Z)("MuiFormGroup",["root","row","error"]);var p=o(52930),v=o(76147),Z=o(80184),h=["className","row"],b=(0,s.ZP)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[r.root,o.row&&r.row]}})((function(e){var r=e.ownerState;return(0,n.Z)({display:"flex",flexDirection:"column",flexWrap:"wrap"},r.row&&{flexDirection:"row"})})),g=l.forwardRef((function(e,r){var o=(0,u.Z)({props:e,name:"MuiFormGroup"}),a=o.className,l=o.row,s=void 0!==l&&l,d=(0,t.Z)(o,h),m=(0,p.Z)(),g=(0,v.Z)({props:o,muiFormControl:m,states:["error"]}),w=(0,n.Z)({},o,{row:s,error:g.error}),C=function(e){var r=e.classes,o={root:["root",e.row&&"row",e.error&&"error"]};return(0,c.Z)(o,f,r)}(w);return(0,Z.jsx)(b,(0,n.Z)({className:(0,i.Z)(C.root,a),ownerState:w,ref:r},d))})),w=o(42071),C=o(98278),k=o(18672),S=o(67384),x=["actions","children","defaultValue","name","onChange","value"],P=l.forwardRef((function(e,r){var o=e.actions,i=e.children,c=e.defaultValue,s=e.name,u=e.onChange,d=e.value,m=(0,t.Z)(e,x),f=l.useRef(null),p=(0,C.Z)({controlled:d,default:c,name:"RadioGroup"}),v=(0,a.Z)(p,2),h=v[0],b=v[1];l.useImperativeHandle(o,(function(){return{focus:function(){var e=f.current.querySelector("input:not(:disabled):checked");e||(e=f.current.querySelector("input:not(:disabled)")),e&&e.focus()}}}),[]);var P=(0,w.Z)(r,f),y=(0,S.Z)(s),R=l.useMemo((function(){return{name:y,onChange:function(e){b(e.target.value),u&&u(e,e.target.value)},value:h}}),[y,u,b,h]);return(0,Z.jsx)(k.Z.Provider,{value:R,children:(0,Z.jsx)(g,(0,n.Z)({role:"radiogroup",ref:P},m,{children:i}))})}))},18672:function(e,r,o){var a=o(72791).createContext(void 0);r.Z=a}}]);
-//# sourceMappingURL=1520.af5d5afd.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1520.af5d5afd.chunk.js.map b/portal-ui/build/static/js/1520.af5d5afd.chunk.js.map
deleted file mode 100644
index e4e3508b0..000000000
--- a/portal-ui/build/static/js/1520.af5d5afd.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1520.af5d5afd.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../node_modules/@mui/material/Radio/RadioButtonIcon.js","../node_modules/@mui/material/Radio/radioClasses.js","../node_modules/@mui/material/Radio/Radio.js","../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../node_modules/@mui/material/FormGroup/formGroupClasses.js","../node_modules/@mui/material/FormGroup/FormGroup.js","../node_modules/@mui/material/RadioGroup/RadioGroup.js","../node_modules/@mui/material/RadioGroup/RadioGroupContext.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error', 'required', 'asterisk']);\nexport default formControlLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"className\", \"componentsProps\", \"control\", \"disabled\", \"disableTypography\", \"inputRef\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"required\", \"slotProps\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { useFormControl } from '../FormControl';\nimport Typography from '../Typography';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport formControlLabelClasses, { getFormControlLabelUtilityClasses } from './formControlLabelClasses';\nimport formControlState from '../FormControl/formControlState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n labelPlacement,\n error,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error', required && 'required'],\n label: ['label', disabled && 'disabled'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormControlLabelUtilityClasses, classes);\n};\nexport const FormControlLabelRoot = styled('label', {\n name: 'MuiFormControlLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formControlLabelClasses.label}`]: styles.label\n }, styles.root, styles[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n WebkitTapHighlightColor: 'transparent',\n marginLeft: -11,\n marginRight: 16,\n // used for row presentation of radio/checkbox\n [`&.${formControlLabelClasses.disabled}`]: {\n cursor: 'default'\n }\n}, ownerState.labelPlacement === 'start' && {\n flexDirection: 'row-reverse',\n marginLeft: 16,\n // used for row presentation of radio/checkbox\n marginRight: -11\n}, ownerState.labelPlacement === 'top' && {\n flexDirection: 'column-reverse',\n marginLeft: 16\n}, ownerState.labelPlacement === 'bottom' && {\n flexDirection: 'column',\n marginLeft: 16\n}, {\n [`& .${formControlLabelClasses.label}`]: {\n [`&.${formControlLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormControlLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formControlLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(inProps, ref) {\n var _ref, _slotProps$typography;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControlLabel'\n });\n const {\n className,\n componentsProps = {},\n control,\n disabled: disabledProp,\n disableTypography,\n label: labelProp,\n labelPlacement = 'end',\n required: requiredProp,\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const disabled = (_ref = disabledProp != null ? disabledProp : control.props.disabled) != null ? _ref : muiFormControl == null ? void 0 : muiFormControl.disabled;\n const required = requiredProp != null ? requiredProp : control.props.required;\n const controlProps = {\n disabled,\n required\n };\n ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n controlProps[key] = props[key];\n }\n });\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n disabled,\n labelPlacement,\n required,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;\n let label = labelProp;\n if (label != null && label.type !== Typography && !disableTypography) {\n label = /*#__PURE__*/_jsx(Typography, _extends({\n component: \"span\"\n }, typographySlotProps, {\n className: clsx(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),\n children: label\n }));\n }\n return /*#__PURE__*/_jsxs(FormControlLabelRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/React.cloneElement(control, controlProps), label, required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component appears selected.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n */\n control: PropTypes.element.isRequired,\n /**\n * If `true`, the control is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is rendered as it is passed without an additional typography node.\n */\n disableTypography: PropTypes.bool,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * A text or an element to be used in an enclosing label element.\n */\n label: PropTypes.node,\n /**\n * The position of the label.\n * @default 'end'\n */\n labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n /**\n * @ignore\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default FormControlLabel;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span')({\n position: 'relative',\n display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n // Scale applied to prevent dot misalignment in Safari\n transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(({\n theme,\n ownerState\n}) => _extends({\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n}, ownerState.checked && {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n}));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n const {\n checked = false,\n classes = {},\n fontSize\n } = props;\n const ownerState = _extends({}, props, {\n checked\n });\n return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n className: classes.root,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n fontSize: fontSize,\n className: classes.background,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n fontSize: fontSize,\n className: classes.dot,\n ownerState: ownerState\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes = {\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n */\n fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);\nexport default radioClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"checkedIcon\", \"color\", \"icon\", \"name\", \"onChange\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nimport radioClasses, { getRadioUtilityClass } from './radioClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`]\n };\n return _extends({}, classes, composeClasses(slots, getRadioUtilityClass, classes));\n};\nconst RadioRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiRadio',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${radioClasses.checked}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n}, {\n [`&.${radioClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n }\n\n // The value could be a number, the DOM will stringify it anyway.\n return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n var _defaultIcon$props$fo, _defaultCheckedIcon$p;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiRadio'\n });\n const {\n checked: checkedProp,\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon = defaultIcon,\n name: nameProp,\n onChange: onChangeProp,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = areEqualValues(radioGroup.value, props.value);\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n return /*#__PURE__*/_jsx(RadioRoot, _extends({\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_defaultIcon$props$fo = defaultIcon.props.fontSize) != null ? _defaultIcon$props$fo : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n fontSize: (_defaultCheckedIcon$p = defaultCheckedIcon.props.fontSize) != null ? _defaultCheckedIcon$p : size\n }),\n ownerState: ownerState,\n classes: classes,\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n * @default \n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display when the component is unchecked.\n * @default \n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default Radio;","import * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"row\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getFormGroupUtilityClass } from './formGroupClasses';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n row,\n error\n } = ownerState;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n name: 'MuiFormGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.row && styles.row];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap'\n}, ownerState.row && {\n flexDirection: 'row'\n}));\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormGroup'\n });\n const {\n className,\n row = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n row,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormGroupRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Display group of elements in a compact row.\n * @default false\n */\n row: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"children\", \"defaultValue\", \"name\", \"onChange\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport FormGroup from '../FormGroup';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport RadioGroupContext from './RadioGroupContext';\nimport useId from '../utils/useId';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n children,\n defaultValue,\n name: nameProp,\n onChange,\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootRef = React.useRef(null);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n React.useImperativeHandle(actions, () => ({\n focus: () => {\n let input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n }), []);\n const handleRef = useForkRef(ref, rootRef);\n const name = useId(nameProp);\n const contextValue = React.useMemo(() => ({\n name,\n onChange(event) {\n setValueState(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n },\n value\n }), [name, onChange, setValueState, value]);\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(FormGroup, _extends({\n role: \"radiogroup\",\n ref: handleRef\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * The name used to reference the value of the control.\n * If you don't provide this prop, it falls back to a randomly generated name.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a radio button is selected.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {string} value The value of the selected radio button.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * Value of the selected radio button. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;"],"names":["getFormControlLabelUtilityClasses","slot","generateUtilityClass","generateUtilityClasses","_excluded","FormControlLabelRoot","styled","name","overridesResolver","props","styles","ownerState","_defineProperty","concat","formControlLabelClasses","label","root","capitalize","labelPlacement","_ref3","theme","_extends","display","alignItems","cursor","verticalAlign","WebkitTapHighlightColor","marginLeft","marginRight","disabled","flexDirection","color","vars","palette","text","AsteriskComponent","asterisk","_ref4","error","main","React","inProps","ref","_ref","_slotProps$typography","useThemeProps","className","_props$componentsProp","componentsProps","control","disabledProp","disableTypography","labelProp","_props$labelPlacement","requiredProp","required","_props$slotProps","slotProps","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","controlProps","forEach","key","fcs","formControlState","states","classes","slots","composeClasses","useUtilityClasses","typographySlotProps","typography","type","Typography","_jsx","component","clsx","children","_jsxs","createSvgIcon","d","RadioButtonIconRoot","position","RadioButtonIconBackground","RadioButtonUncheckedIcon","transform","RadioButtonIconDot","RadioButtonCheckedIcon","left","transition","transitions","create","easing","easeIn","duration","shortest","checked","easeOut","_props$checked","_props$classes","fontSize","background","dot","getRadioUtilityClass","RadioRoot","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","secondary","disableRipple","backgroundColor","action","activeChannel","mainChannel","hoverOpacity","alpha","active","radioClasses","defaultCheckedIcon","RadioButtonIcon","defaultIcon","_defaultIcon$props$fo","_defaultCheckedIcon$p","a","b","checkedProp","_props$checkedIcon","checkedIcon","_props$color","_props$icon","icon","nameProp","onChangeProp","onChange","_props$size","size","radioGroup","RadioGroupContext","createChainedFunction","value","String","getFormGroupUtilityClass","FormGroupRoot","row","flexWrap","_props$row","actions","defaultValue","valueProp","rootRef","_useControlled","useControlled","controlled","default","_useControlled2","_slicedToArray","setValueState","focus","input","current","querySelector","handleRef","useForkRef","useId","contextValue","event","target","Provider","FormGroup","role","undefined"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1569.eb3c10a7.chunk.js b/portal-ui/build/static/js/1569.eb3c10a7.chunk.js
deleted file mode 100644
index 7da959fb1..000000000
--- a/portal-ui/build/static/js/1569.eb3c10a7.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1569,4882,7981,9581,6662,222],{3579:function(e,t,r){"use strict";var n=r(64836);t.Z=void 0;var o=n(r(45649)),a=r(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=i},20165:function(e,t,r){"use strict";var n=r(64836);t.Z=void 0;var o=n(r(45649)),a=r(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=i},45649:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=r(28610)},93840:function(e,t,r){"use strict";var n=r(72791).createContext(void 0);t.Z=n},76147:function(e,t,r){"use strict";function n(e){var t=e.props,r=e.states,n=e.muiFormControl;return r.reduce((function(e,r){return e[r]=t[r],n&&"undefined"===typeof t[r]&&(e[r]=n[r]),e}),{})}r.d(t,{Z:function(){return n}})},52930:function(e,t,r){"use strict";r.d(t,{Z:function(){return a}});var n=r(72791),o=r(93840);function a(){return n.useContext(o.Z)}},17133:function(e,t,r){"use strict";var n=r(4942),o=r(63366),a=r(87462),i=r(72791),c=r(28182),s=r(94419),l=r(76147),u=r(52930),d=r(14036),f=r(31402),p=r(66934),m=r(10843),h=r(80184),v=["children","className","color","component","disabled","error","filled","focused","required"],Z=(0,p.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,t){var r=e.ownerState;return(0,a.Z)({},t.root,"secondary"===r.color&&t.colorSecondary,r.filled&&t.filled)}})((function(e){var t,r=e.theme,o=e.ownerState;return(0,a.Z)({color:(r.vars||r).palette.text.secondary},r.typography.body1,(t={lineHeight:"1.4375em",padding:0,position:"relative"},(0,n.Z)(t,"&.".concat(m.Z.focused),{color:(r.vars||r).palette[o.color].main}),(0,n.Z)(t,"&.".concat(m.Z.disabled),{color:(r.vars||r).palette.text.disabled}),(0,n.Z)(t,"&.".concat(m.Z.error),{color:(r.vars||r).palette.error.main}),t))})),b=(0,p.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,t){return t.asterisk}})((function(e){var t=e.theme;return(0,n.Z)({},"&.".concat(m.Z.error),{color:(t.vars||t).palette.error.main})})),g=i.forwardRef((function(e,t){var r=(0,f.Z)({props:e,name:"MuiFormLabel"}),n=r.children,i=r.className,p=r.component,g=void 0===p?"label":p,k=(0,o.Z)(r,v),x=(0,u.Z)(),w=(0,l.Z)({props:r,muiFormControl:x,states:["color","required","focused","disabled","error","filled"]}),S=(0,a.Z)({},r,{color:w.color||"primary",component:g,disabled:w.disabled,error:w.error,filled:w.filled,focused:w.focused,required:w.required}),y=function(e){var t=e.classes,r=e.color,n=e.focused,o=e.disabled,a=e.error,i=e.filled,c=e.required,l={root:["root","color".concat((0,d.Z)(r)),o&&"disabled",a&&"error",i&&"filled",n&&"focused",c&&"required"],asterisk:["asterisk",a&&"error"]};return(0,s.Z)(l,m.M,t)}(S);return(0,h.jsxs)(Z,(0,a.Z)({as:g,ownerState:S,className:(0,c.Z)(y.root,i),ref:t},k,{children:[n,w.required&&(0,h.jsxs)(b,{ownerState:S,"aria-hidden":!0,className:y.asterisk,children:["\u2009","*"]})]}))}));t.Z=g},10843:function(e,t,r){"use strict";r.d(t,{M:function(){return a}});var n=r(75878),o=r(21217);function a(e){return(0,o.Z)("MuiFormLabel",e)}var i=(0,n.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);t.Z=i},30829:function(e,t,r){"use strict";r.d(t,{Z:function(){return x}});var n=r(4942),o=r(63366),a=r(87462),i=r(72791),c=r(94419),s=r(28182),l=r(76147),u=r(52930),d=r(17133),f=r(10843),p=r(31402),m=r(66934),h=r(75878),v=r(21217);function Z(e){return(0,v.Z)("MuiInputLabel",e)}(0,h.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var b=r(80184),g=["disableAnimation","margin","shrink","variant","className"],k=(0,m.ZP)(d.Z,{shouldForwardProp:function(e){return(0,m.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,t){var r=e.ownerState;return[(0,n.Z)({},"& .".concat(f.Z.asterisk),t.asterisk),t.root,r.formControl&&t.formControl,"small"===r.size&&t.sizeSmall,r.shrink&&t.shrink,!r.disableAnimation&&t.animated,t[r.variant]]}})((function(e){var t=e.theme,r=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},r.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===r.size&&{transform:"translate(0, 17px) scale(1)"},r.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!r.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===r.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===r.size&&{transform:"translate(12px, 13px) scale(1)"},r.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===r.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===r.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===r.size&&{transform:"translate(14px, 9px) scale(1)"},r.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),x=i.forwardRef((function(e,t){var r=(0,p.Z)({name:"MuiInputLabel",props:e}),n=r.disableAnimation,i=void 0!==n&&n,d=r.shrink,f=r.className,m=(0,o.Z)(r,g),h=(0,u.Z)(),v=d;"undefined"===typeof v&&h&&(v=h.filled||h.focused||h.adornedStart);var x=(0,l.Z)({props:r,muiFormControl:h,states:["size","variant","required"]}),w=(0,a.Z)({},r,{disableAnimation:i,formControl:h,shrink:v,size:x.size,variant:x.variant,required:x.required}),S=function(e){var t=e.classes,r=e.formControl,n=e.size,o=e.shrink,i={root:["root",r&&"formControl",!e.disableAnimation&&"animated",o&&"shrink","small"===n&&"sizeSmall",e.variant],asterisk:[e.required&&"asterisk"]},s=(0,c.Z)(i,Z,t);return(0,a.Z)({},t,s)}(w);return(0,b.jsx)(k,(0,a.Z)({"data-shrink":v,ownerState:w,ref:t,className:(0,s.Z)(S.root,f)},m,{classes:S}))}))},9955:function(e,t,r){"use strict";r.d(t,{Z:function(){return y}});var n=r(4942),o=r(63366),a=r(87462),i=r(72791),c=r(28182),s=r(94419),l=r(12065),u=r(14036),d=r(97278),f=r(31402),p=r(66934),m=r(75878),h=r(21217);function v(e){return(0,h.Z)("MuiSwitch",e)}var Z=(0,m.Z)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),b=r(80184),g=["className","color","edge","size","sx"],k=(0,p.ZP)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:function(e,t){var r=e.ownerState;return[t.root,r.edge&&t["edge".concat((0,u.Z)(r.edge))],t["size".concat((0,u.Z)(r.size))]]}})((function(e){var t,r=e.ownerState;return(0,a.Z)({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"}},"start"===r.edge&&{marginLeft:-8},"end"===r.edge&&{marginRight:-8},"small"===r.size&&(t={width:40,height:24,padding:7},(0,n.Z)(t,"& .".concat(Z.thumb),{width:16,height:16}),(0,n.Z)(t,"& .".concat(Z.switchBase),(0,n.Z)({padding:4},"&.".concat(Z.checked),{transform:"translateX(16px)"})),t))})),x=(0,p.ZP)(d.Z,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:function(e,t){var r=e.ownerState;return[t.switchBase,(0,n.Z)({},"& .".concat(Z.input),t.input),"default"!==r.color&&t["color".concat((0,u.Z)(r.color))]]}})((function(e){var t,r=e.theme;return t={position:"absolute",top:0,left:0,zIndex:1,color:r.vars?r.vars.palette.Switch.defaultColor:"".concat("light"===r.palette.mode?r.palette.common.white:r.palette.grey[300]),transition:r.transitions.create(["left","transform"],{duration:r.transitions.duration.shortest})},(0,n.Z)(t,"&.".concat(Z.checked),{transform:"translateX(20px)"}),(0,n.Z)(t,"&.".concat(Z.disabled),{color:r.vars?r.vars.palette.Switch.defaultDisabledColor:"".concat("light"===r.palette.mode?r.palette.grey[100]:r.palette.grey[600])}),(0,n.Z)(t,"&.".concat(Z.checked," + .").concat(Z.track),{opacity:.5}),(0,n.Z)(t,"&.".concat(Z.disabled," + .").concat(Z.track),{opacity:r.vars?r.vars.opacity.switchTrackDisabled:"".concat("light"===r.palette.mode?.12:.2)}),(0,n.Z)(t,"& .".concat(Z.input),{left:"-100%",width:"300%"}),t}),(function(e){var t,r=e.theme,o=e.ownerState;return(0,a.Z)({"&:hover":{backgroundColor:r.vars?"rgba(".concat(r.vars.palette.action.activeChannel," / ").concat(r.vars.palette.action.hoverOpacity,")"):(0,l.Fq)(r.palette.action.active,r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==o.color&&(t={},(0,n.Z)(t,"&.".concat(Z.checked),(0,n.Z)({color:(r.vars||r).palette[o.color].main,"&:hover":{backgroundColor:r.vars?"rgba(".concat(r.vars.palette[o.color].mainChannel," / ").concat(r.vars.palette.action.hoverOpacity,")"):(0,l.Fq)(r.palette[o.color].main,r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&.".concat(Z.disabled),{color:r.vars?r.vars.palette.Switch["".concat(o.color,"DisabledColor")]:"".concat("light"===r.palette.mode?(0,l.$n)(r.palette[o.color].main,.62):(0,l._j)(r.palette[o.color].main,.55))})),(0,n.Z)(t,"&.".concat(Z.checked," + .").concat(Z.track),{backgroundColor:(r.vars||r).palette[o.color].main}),t))})),w=(0,p.ZP)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:function(e,t){return t.track}})((function(e){var t=e.theme;return{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:t.transitions.create(["opacity","background-color"],{duration:t.transitions.duration.shortest}),backgroundColor:t.vars?t.vars.palette.common.onBackground:"".concat("light"===t.palette.mode?t.palette.common.black:t.palette.common.white),opacity:t.vars?t.vars.opacity.switchTrack:"".concat("light"===t.palette.mode?.38:.3)}})),S=(0,p.ZP)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:function(e,t){return t.thumb}})((function(e){var t=e.theme;return{boxShadow:(t.vars||t).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}})),y=i.forwardRef((function(e,t){var r=(0,f.Z)({props:e,name:"MuiSwitch"}),n=r.className,i=r.color,l=void 0===i?"primary":i,d=r.edge,p=void 0!==d&&d,m=r.size,h=void 0===m?"medium":m,Z=r.sx,y=(0,o.Z)(r,g),C=(0,a.Z)({},r,{color:l,edge:p,size:h}),z=function(e){var t=e.classes,r=e.edge,n=e.size,o=e.color,i=e.checked,c=e.disabled,l={root:["root",r&&"edge".concat((0,u.Z)(r)),"size".concat((0,u.Z)(n))],switchBase:["switchBase","color".concat((0,u.Z)(o)),i&&"checked",c&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},d=(0,s.Z)(l,v,t);return(0,a.Z)({},t,d)}(C),R=(0,b.jsx)(S,{className:z.thumb,ownerState:C});return(0,b.jsxs)(k,{className:(0,c.Z)(z.root,n),sx:Z,ownerState:C,children:[(0,b.jsx)(x,(0,a.Z)({type:"checkbox",icon:R,checkedIcon:R,ref:t,ownerState:C},y,{classes:(0,a.Z)({},z,{root:z.switchBase})})),(0,b.jsx)(w,{className:z.track,ownerState:C})]})}))},97278:function(e,t,r){"use strict";r.d(t,{Z:function(){return x}});var n=r(29439),o=r(63366),a=r(87462),i=r(72791),c=r(28182),s=r(94419),l=r(14036),u=r(66934),d=r(98278),f=r(52930),p=r(95080),m=r(75878),h=r(21217);function v(e){return(0,h.Z)("PrivateSwitchBase",e)}(0,m.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var Z=r(80184),b=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],g=(0,u.ZP)(p.Z)((function(e){var t=e.ownerState;return(0,a.Z)({padding:9,borderRadius:"50%"},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})})),k=(0,u.ZP)("input")({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),x=i.forwardRef((function(e,t){var r=e.autoFocus,i=e.checked,u=e.checkedIcon,p=e.className,m=e.defaultChecked,h=e.disabled,x=e.disableFocusRipple,w=void 0!==x&&x,S=e.edge,y=void 0!==S&&S,C=e.icon,z=e.id,R=e.inputProps,M=e.inputRef,F=e.name,I=e.onBlur,P=e.onChange,q=e.onFocus,N=e.readOnly,B=e.required,O=void 0!==B&&B,j=e.tabIndex,E=e.type,L=e.value,_=(0,o.Z)(e,b),A=(0,d.Z)({controlled:i,default:Boolean(m),name:"SwitchBase",state:"checked"}),W=(0,n.Z)(A,2),T=W[0],D=W[1],V=(0,f.Z)(),X=h;V&&"undefined"===typeof X&&(X=V.disabled);var G="checkbox"===E||"radio"===E,H=(0,a.Z)({},e,{checked:T,disabled:X,disableFocusRipple:w,edge:y}),$=function(e){var t=e.classes,r=e.checked,n=e.disabled,o=e.edge,a={root:["root",r&&"checked",n&&"disabled",o&&"edge".concat((0,l.Z)(o))],input:["input"]};return(0,s.Z)(a,v,t)}(H);return(0,Z.jsxs)(g,(0,a.Z)({component:"span",className:(0,c.Z)($.root,p),centerRipple:!0,focusRipple:!w,disabled:X,tabIndex:null,role:void 0,onFocus:function(e){q&&q(e),V&&V.onFocus&&V.onFocus(e)},onBlur:function(e){I&&I(e),V&&V.onBlur&&V.onBlur(e)},ownerState:H,ref:t},_,{children:[(0,Z.jsx)(k,(0,a.Z)({autoFocus:r,checked:i,defaultChecked:m,className:$.input,disabled:X,id:G?z:void 0,name:F,onChange:function(e){if(!e.nativeEvent.defaultPrevented){var t=e.target.checked;D(t),P&&P(e,t)}},readOnly:N,ref:M,required:O,ownerState:H,tabIndex:j,type:E},"checkbox"===E&&void 0===L?{}:{value:L},R)),T?u:C]}))}))},31260:function(e,t,r){"use strict";var n=r(78949);t.Z=n.Z},28610:function(e,t,r){"use strict";r.r(t),r.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return c.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return l.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return x},unstable_useEnhancedEffect:function(){return m.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return v},useControlled:function(){return Z.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return k.Z}});var n=r(55902),o=r(14036),a=r(31260),i=r(76189),c=r(83199);var s=function(e,t){return function(){return null}},l=r(19103),u=r(98301),d=r(17602);r(87462);var f=function(e,t){return function(){return null}},p=r(62971).Z,m=r(40162),h=r(67384);var v=function(e,t,r,n,o){return null},Z=r(98278),b=r(89683),g=r(42071),k=r(23031),x={configure:function(e){n.Z.configure(e)}}},19103:function(e,t,r){"use strict";r.d(t,{Z:function(){return o}});var n=r(72791);var o=function(e,t){return n.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,r){"use strict";function n(){for(var e=arguments.length,t=new Array(e),r=0;r {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"edge\", \"size\", \"sx\"];\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, darken, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport switchClasses, { getSwitchUtilityClass } from './switchClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n edge,\n size,\n color,\n checked,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n thumb: ['thumb'],\n track: ['track'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst SwitchRoot = styled('span', {\n name: 'MuiSwitch',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n width: 34 + 12 * 2,\n height: 14 + 12 * 2,\n overflow: 'hidden',\n padding: 12,\n boxSizing: 'border-box',\n position: 'relative',\n flexShrink: 0,\n zIndex: 0,\n // Reset the stacking context.\n verticalAlign: 'middle',\n // For correct alignment with the text.\n '@media print': {\n colorAdjust: 'exact'\n }\n}, ownerState.edge === 'start' && {\n marginLeft: -8\n}, ownerState.edge === 'end' && {\n marginRight: -8\n}, ownerState.size === 'small' && {\n width: 40,\n height: 24,\n padding: 7,\n [`& .${switchClasses.thumb}`]: {\n width: 16,\n height: 16\n },\n [`& .${switchClasses.switchBase}`]: {\n padding: 4,\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(16px)'\n }\n }\n}));\nconst SwitchSwitchBase = styled(SwitchBase, {\n name: 'MuiSwitch',\n slot: 'SwitchBase',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.switchBase, {\n [`& .${switchClasses.input}`]: styles.input\n }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme\n}) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n // Render above the focus ripple.\n color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n transition: theme.transitions.create(['left', 'transform'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(20px)'\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n opacity: 0.5\n },\n [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n },\n [`& .${switchClasses.input}`]: {\n left: '-100%',\n width: '300%'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${switchClasses.checked}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main,\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.vars ? theme.vars.palette.Switch[`${ownerState.color}DisabledColor`] : `${theme.palette.mode === 'light' ? lighten(theme.palette[ownerState.color].main, 0.62) : darken(theme.palette[ownerState.color].main, 0.55)}`\n }\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n}));\nconst SwitchTrack = styled('span', {\n name: 'MuiSwitch',\n slot: 'Track',\n overridesResolver: (props, styles) => styles.track\n})(({\n theme\n}) => ({\n height: '100%',\n width: '100%',\n borderRadius: 14 / 2,\n zIndex: -1,\n transition: theme.transitions.create(['opacity', 'background-color'], {\n duration: theme.transitions.duration.shortest\n }),\n backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n}));\nconst SwitchThumb = styled('span', {\n name: 'MuiSwitch',\n slot: 'Thumb',\n overridesResolver: (props, styles) => styles.thumb\n})(({\n theme\n}) => ({\n boxShadow: (theme.vars || theme).shadows[1],\n backgroundColor: 'currentColor',\n width: 20,\n height: 20,\n borderRadius: '50%'\n}));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSwitch'\n });\n const {\n className,\n color = 'primary',\n edge = false,\n size = 'medium',\n sx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n edge,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n className: classes.thumb,\n ownerState: ownerState\n });\n return /*#__PURE__*/_jsxs(SwitchRoot, {\n className: clsx(classes.root, className),\n sx: sx,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(SwitchSwitchBase, _extends({\n type: \"checkbox\",\n icon: icon,\n checkedIcon: icon,\n ref: ref,\n ownerState: ownerState\n }, other, {\n classes: _extends({}, classes, {\n root: classes.switchBase\n })\n })), /*#__PURE__*/_jsx(SwitchTrack, {\n className: classes.track,\n ownerState: ownerState\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The default checked state. Use when the component is not controlled.\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense switch styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n */\n value: PropTypes.any\n} : void 0;\nexport default Switch;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n checked,\n disabled,\n edge\n } = ownerState;\n const slots = {\n root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n input: ['input']\n };\n return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n ownerState\n}) => _extends({\n padding: 9,\n borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input')({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n const {\n autoFocus,\n checked: checkedProp,\n checkedIcon,\n className,\n defaultChecked,\n disabled: disabledProp,\n disableFocusRipple = false,\n edge = false,\n icon,\n id,\n inputProps,\n inputRef,\n name,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n required = false,\n tabIndex,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [checked, setCheckedState] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n });\n const muiFormControl = useFormControl();\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n const handleInputChange = event => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n if (onChange) {\n // TODO v6: remove the second argument.\n onChange(event, newChecked);\n }\n };\n let disabled = disabledProp;\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n const hasLabelFor = type === 'checkbox' || type === 'radio';\n const ownerState = _extends({}, props, {\n checked,\n disabled,\n disableFocusRipple,\n edge\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n component: \"span\",\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor ? id : undefined,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n ownerState: ownerState,\n tabIndex: tabIndex,\n type: type\n }, type === 'checkbox' && value === undefined ? {} : {\n value\n }, inputProps)), checked ? checkedIcon : icon]\n }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /*\n * @ignore\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","FormControlContext","React","undefined","formControlState","_ref","props","states","muiFormControl","reduce","acc","state","useFormControl","_excluded","FormLabelRoot","styled","name","slot","overridesResolver","styles","ownerState","_extends","root","color","colorSecondary","filled","_ref2","_extends2","theme","vars","palette","text","secondary","typography","body1","lineHeight","padding","position","_defineProperty","concat","formLabelClasses","focused","main","disabled","error","AsteriskComponent","asterisk","_ref3","FormLabel","inProps","ref","useThemeProps","children","className","_props$component","component","other","_objectWithoutPropertiesLoose","fcs","required","classes","slots","capitalize","composeClasses","getFormLabelUtilityClasses","useUtilityClasses","_jsxs","as","clsx","generateUtilityClass","generateUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","size","sizeSmall","shrink","disableAnimation","animated","variant","display","transformOrigin","whiteSpace","overflow","textOverflow","maxWidth","left","top","transform","transition","transitions","create","duration","shorter","easing","easeOut","zIndex","pointerEvents","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses","_jsx","getSwitchUtilityClass","SwitchRoot","edge","width","height","boxSizing","flexShrink","verticalAlign","colorAdjust","marginLeft","marginRight","switchClasses","thumb","switchBase","checked","SwitchSwitchBase","SwitchBase","input","_ref4","_ref5","Switch","defaultColor","mode","common","white","grey","shortest","defaultDisabledColor","track","opacity","switchTrackDisabled","_ref6","_ref7","backgroundColor","action","activeChannel","hoverOpacity","alpha","active","mainChannel","lighten","darken","SwitchTrack","_ref8","borderRadius","onBackground","black","switchTrack","SwitchThumb","_ref9","boxShadow","shadows","_props$color","_props$edge","_props$size","sx","icon","type","checkedIcon","getSwitchBaseUtilityClass","SwitchBaseRoot","ButtonBase","SwitchBaseInput","cursor","margin","autoFocus","checkedProp","defaultChecked","disabledProp","_props$disableFocusRi","disableFocusRipple","id","inputProps","inputRef","onBlur","onChange","onFocus","readOnly","_props$required","tabIndex","_useControlled","useControlled","controlled","Boolean","_useControlled2","_slicedToArray","setCheckedState","hasLabelFor","centerRipple","focusRipple","role","event","nativeEvent","defaultPrevented","newChecked","target","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","_len","arguments","length","funcs","Array","_key","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.a911ee27.chunk.js b/portal-ui/build/static/js/1581.a911ee27.chunk.js
new file mode 100644
index 000000000..dd151c4d9
--- /dev/null
+++ b/portal-ui/build/static/js/1581.a911ee27.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581],{1581:function(t,e,n){n.r(e);var a=n(29439),o=n(72791),i=n(29945),u=n(45248),r=n(23814),l=n(56028),c=n(84741),s=n(87995),d=n(81551),f=n(31776),b=n(82342),h=n(40986),v=n(80184);e.default=function(t){var e=t.open,n=t.enabled,x=t.cfg,g=t.selectedBucket,p=t.closeModalAndRefresh,m=(0,d.TL)(),j=(0,o.useState)(!1),k=(0,a.Z)(j,2),Z=k[0],C=k[1],S=(0,o.useState)(!1),q=(0,a.Z)(S,2),z=q[0],_=q[1],y=(0,o.useState)("1"),B=(0,a.Z)(y,2),w=B[0],E=B[1],T=(0,o.useState)("Ti"),F=(0,a.Z)(T,2),O=F[0],Q=F[1],A=(0,o.useState)(!1),I=(0,a.Z)(A,2),L=I[0],P=I[1];(0,o.useEffect)((function(){if(n&&(_(!0),x)){var t=(0,u.Am)(x.quota||0,!0,!1,!0);E(t.total.toString()),Q(t.unit),P(!0)}}),[n,x]),(0,o.useEffect)((function(){P(!z||/^\d*(?:\.\d{1,2})?$/.test(w))}),[z,w]);return(0,v.jsx)(l.Z,{modalOpen:e,onClose:function(){p()},title:"Enable Bucket Quota",titleIcon:(0,v.jsx)(i.Wqw,{}),children:(0,v.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),!Z&&L&&f.h.buckets.setBucketQuota(g,{enabled:z,amount:parseInt((0,u.Pw)(w,O,!0)),quota_type:"hard"}).then((function(){C(!1),p()})).catch((function(t){C(!1),m((0,s.zb)((0,b.g)(t.error)))}))},children:(0,v.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,v.jsx)(i.rsf,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:z,onChange:function(t){_(t.target.checked)},label:"Enabled"}),z&&(0,v.jsx)(i.Wzg,{id:"quota_size",name:"quota_size",onChange:function(t){E(t.target.value),t.target.validity.valid?P(!0):P(!1)},label:"Quota",value:w,required:!0,min:"1",overlayObject:(0,v.jsx)(c.Z,{id:"quota_unit",onUnitChange:function(t){Q(t)},unitSelected:O,unitsList:(0,u.zQ)(["Ki"]),disabled:!1}),error:L?"":"Please enter a valid quota"}),(0,v.jsxs)(i.rjZ,{item:!0,xs:12,sx:r.ID.modalButtonBar,children:[(0,v.jsx)(i.zxk,{id:"cancel",type:"button",variant:"regular",disabled:Z,onClick:function(){p()},label:"Cancel"}),(0,v.jsx)(i.zxk,{id:"save",type:"submit",variant:"callAction",disabled:Z||!L,label:"Save"})]}),Z&&(0,v.jsx)(i.rjZ,{item:!0,xs:12,children:(0,v.jsx)(h.Z,{})})]})})})}},84741:function(t,e,n){var a=n(29439),o=n(72791),i=n(11135),u=n(25787),r=n(71715),l=n(77865),c=n(80184);e.Z=(0,u.Z)((function(t){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(t){var e=t.classes,n=t.id,i=t.unitSelected,u=t.unitsList,s=t.disabled,d=void 0!==s&&s,f=t.onUnitChange,b=o.useState(null),h=(0,a.Z)(b,2),v=h[0],x=h[1],g=Boolean(v),p=function(t){x(null),""!==t&&f&&f(t)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":g?"true":void 0,onClick:function(t){x(t.currentTarget)},className:e.buttonTrigger,disabled:d,type:"button",children:i}),(0,c.jsx)(r.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:v,open:g,onClose:function(){p("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:u.map((function(t){return(0,c.jsx)(l.Z,{onClick:function(){return p(t.value)},children:t.label},"itemUnit-".concat(t.value,"-").concat(t.label))}))})]})}))}}]);
+//# sourceMappingURL=1581.a911ee27.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.a911ee27.chunk.js.map b/portal-ui/build/static/js/1581.a911ee27.chunk.js.map
new file mode 100644
index 000000000..49c327da4
--- /dev/null
+++ b/portal-ui/build/static/js/1581.a911ee27.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1581.a911ee27.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n BucketQuotaIcon,\n Button,\n FormLayout,\n InputBox,\n Switch,\n Grid,\n} from \"mds\";\nimport {\n calculateBytes,\n getBytes,\n k8sScalarUnitsExcluding,\n} from \"../../../../common/utils\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { LinearProgress } from \"@mui/material\";\n\ninterface IEnableQuotaProps {\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst EnableQuota = ({\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n}: IEnableQuotaProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"Ti\");\n const [validInput, setValidInput] = useState(false);\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n const unitCalc = calculateBytes(cfg.quota || 0, true, false, true);\n\n setQuotaSize(unitCalc.total.toString());\n setQuotaUnit(unitCalc.unit);\n setValidInput(true);\n }\n }\n }, [enabled, cfg]);\n\n useEffect(() => {\n const valRegExp = /^\\d*(?:\\.\\d{1,2})?$/;\n\n if (!quotaEnabled) {\n setValidInput(true);\n return;\n }\n\n setValidInput(valRegExp.test(quotaSize));\n }, [quotaEnabled, quotaSize]);\n\n const enableBucketEncryption = () => {\n if (loading || !validInput) {\n return;\n }\n\n api.buckets\n .setBucketQuota(selectedBucket, {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nexport default EnableQuota;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { selectorTypes } from \"../SelectWrapper/SelectWrapper\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: selectorTypes[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n"],"names":["_ref","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","quotaEnabled","setQuotaEnabled","_useState5","_useState6","quotaSize","setQuotaSize","_useState7","_useState8","quotaUnit","setQuotaUnit","_useState9","_useState10","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketQuotaIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","setBucketQuota","amount","parseInt","getBytes","quota_type","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","withBorders","containerPadding","Switch","value","id","name","checked","onChange","event","target","label","InputBox","validity","valid","required","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","LinearProgress","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","color","backgroundColor","fontSize","classes","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","concat","undefined","currentTarget","className","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","MenuItem"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.bec44ff2.chunk.js b/portal-ui/build/static/js/1581.bec44ff2.chunk.js
deleted file mode 100644
index 96255da0f..000000000
--- a/portal-ui/build/static/js/1581.bec44ff2.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581,4882,7981,1569,9581,6662,222],{1581:function(e,t,n){"use strict";n.r(t);var r=n(29439),o=n(1413),a=n(72791),i=n(40986),c=n(29945),s=n(11135),l=n(25787),d=n(61889),u=n(45248),p=n(23814),f=n(81159),m=n(21435),h=n(56028),v=n(84741),Z=n(87995),b=n(81551),x=n(31776),g=n(82342),k=n(80184);t.default=(0,l.Z)((function(e){return(0,s.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID))}))((function(e){var t=e.classes,n=e.open,o=e.enabled,s=e.cfg,l=e.selectedBucket,p=e.closeModalAndRefresh,w=(0,b.TL)(),y=(0,a.useState)(!1),C=(0,r.Z)(y,2),j=C[0],S=C[1],F=(0,a.useState)(!1),z=(0,r.Z)(F,2),P=z[0],R=z[1],N=(0,a.useState)("1"),I=(0,r.Z)(N,2),M=I[0],q=I[1],L=(0,a.useState)("Ti"),B=(0,r.Z)(L,2),O=B[0],E=B[1],A=(0,a.useState)(!1),_=(0,r.Z)(A,2),T=_[0],W=_[1];(0,a.useEffect)((function(){if(o&&(R(!0),s)){var e=(0,u.Am)(s.quota||0,!0,!1,!0);q(e.total.toString()),E(e.unit),W(!0)}}),[o,s]),(0,a.useEffect)((function(){W(!P||/^\d*(?:\.\d{1,2})?$/.test(M))}),[P,M]);return(0,k.jsx)(h.Z,{modalOpen:n,onClose:function(){p()},title:"Enable Bucket Quota",titleIcon:(0,k.jsx)(c.Wqw,{}),children:(0,k.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),!j&&T&&x.h.buckets.setBucketQuota(l,{enabled:P,amount:parseInt((0,u.Pw)(M,O,!0)),quota_type:"hard"}).then((function(){S(!1),p()})).catch((function(e){S(!1),w((0,Z.zb)((0,g.g)(e.error)))}))},children:(0,k.jsxs)(d.ZP,{container:!0,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.formScrollable,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(f.Z,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:P,onChange:function(e){R(e.target.checked)},label:"Enabled"})}),P&&(0,k.jsx)(a.Fragment,{children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(m.Z,{id:"quota_size",name:"quota_size",onChange:function(e){q(e.target.value),e.target.validity.valid?W(!0):W(!1)},label:"Quota",value:M,required:!0,min:"1",overlayObject:(0,k.jsx)(v.Z,{id:"quota_unit",onUnitChange:function(e){E(e)},unitSelected:O,unitsList:(0,u.zQ)(["Ki"]),disabled:!1}),error:T?"":"Please enter a valid quota"})})})})})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,k.jsx)(c.zxk,{id:"cancel",type:"button",variant:"regular",disabled:j,onClick:function(){p()},label:"Cancel"}),(0,k.jsx)(c.zxk,{id:"save",type:"submit",variant:"callAction",disabled:j||!T,label:"Save"})]}),j&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(i.Z,{})})]})})})}))},81159:function(e,t,n){"use strict";var r=n(4942),o=n(1413),a=n(72791),i=n(11135),c=n(25787),s=n(9955),l=n(30829),d=n(20068),u=n(20890),p=n(61889),f=n(23814),m=n(29945),h=n(28182),v=n(80184),Z=(0,c.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(s.Z);t.Z=(0,c.Z)((function(e){return(0,i.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},f.OR),f.YI))}))((function(e){var t=e.label,n=void 0===t?"":t,i=e.onChange,c=e.value,s=e.id,f=e.name,b=e.checked,x=void 0!==b&&b,g=e.disabled,k=void 0!==g&&g,w=e.switchOnly,y=void 0!==w&&w,C=e.tooltip,j=void 0===C?"":C,S=e.description,F=void 0===S?"":S,z=e.classes,P=e.indicatorLabels,R=e.extraInputProps,N=void 0===R?{}:R,I=(0,v.jsxs)(a.Fragment,{children:[!y&&(0,v.jsx)("span",{className:(0,h.Z)(z.indicatorLabel,(0,r.Z)({},z.indicatorLabelOn,!x)),children:P&&P.length>1?P[1]:"OFF"}),(0,v.jsx)(Z,{checked:x,onChange:i,color:"primary",name:f,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},N),disabled:k,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:c,id:s}),!y&&(0,v.jsx)("span",{className:(0,h.Z)(z.indicatorLabel,(0,r.Z)({},z.indicatorLabelOn,x)),children:P?P[0]:"ON"})]});return y?I:(0,v.jsx)("div",{children:(0,v.jsxs)(p.ZP,{container:!0,alignItems:"center",children:[(0,v.jsx)(p.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==n&&(0,v.jsxs)(l.Z,{htmlFor:s,className:z.inputLabel,children:[(0,v.jsx)("span",{children:n}),""!==j&&(0,v.jsx)("div",{className:z.tooltipContainer,children:(0,v.jsx)(d.Z,{title:j,placement:"top-start",children:(0,v.jsx)("div",{className:z.tooltip,children:(0,v.jsx)(m.byK,{})})})})]})}),(0,v.jsx)(p.ZP,{item:!0,xs:12,sm:""!==n?4:12,md:""!==n?4:12,textAlign:"right",justifyContent:"end",className:z.switchContainer,children:I}),""!==F&&(0,v.jsx)(p.ZP,{item:!0,xs:12,textAlign:"left",children:(0,v.jsx)(u.Z,{component:"p",className:z.fieldDescription,children:F})})]})})}))},21435:function(e,t,n){"use strict";var r=n(29439),o=n(1413),a=n(72791),i=n(27391),c=n(61889),s=n(30829),l=n(20068),d=n(13400),u=n(20165),p=n(3579),f=n(11135),m=n(72455),h=n(25787),v=n(23814),Z=n(29945),b=n(28182),x=n(80184),g=(0,m.Z)((function(e){return(0,f.Z)((0,o.Z)({},v.gM))}));function k(e){var t=g();return(0,x.jsx)(i.Z,(0,o.Z)({InputProps:{classes:t}},e))}t.Z=(0,h.Z)((function(e){return(0,f.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},v.YI),v.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,n=e.onChange,i=e.value,f=e.id,m=e.name,h=e.type,v=void 0===h?"text":h,g=e.autoComplete,w=void 0===g?"off":g,y=e.disabled,C=void 0!==y&&y,j=e.multiline,S=void 0!==j&&j,F=e.tooltip,z=void 0===F?"":F,P=e.index,R=void 0===P?0:P,N=e.error,I=void 0===N?"":N,M=e.required,q=void 0!==M&&M,L=e.placeholder,B=void 0===L?"":L,O=e.min,E=e.max,A=e.overlayId,_=e.overlayIcon,T=void 0===_?null:_,W=e.overlayObject,D=void 0===W?null:W,V=e.extraInputProps,$=void 0===V?{}:V,K=e.overlayAction,Q=e.noLabelMinWidth,H=void 0!==Q&&Q,U=e.pattern,X=void 0===U?"":U,G=e.autoFocus,Y=void 0!==G&&G,J=e.classes,ee=e.className,te=void 0===ee?"":ee,ne=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":R},$),ie=(0,a.useState)(!1),ce=(0,r.Z)(ie,2),se=ce[0],le=ce[1];"number"===v&&O&&(ae.min=O),"number"===v&&E&&(ae.max=E),""!==X&&(ae.pattern=X);var de=T,ue=v;return"password"===v&&null===T&&(de=se?(0,x.jsx)(u.Z,{}):(0,x.jsx)(p.Z,{}),ue=se?"text":"password"),(0,x.jsx)(a.Fragment,{children:(0,x.jsxs)(c.ZP,{container:!0,className:(0,b.Z)(""!==te?te:"",""!==I?J.errorInField:J.inputBoxContainer),children:[""!==t&&(0,x.jsxs)(s.Z,{htmlFor:f,className:H?J.noMinWidthLabel:J.inputLabel,children:[(0,x.jsxs)("span",{children:[t,q?"*":""]}),""!==z&&(0,x.jsx)("div",{className:J.tooltipContainer,children:(0,x.jsx)(l.Z,{title:z,placement:"top-start",children:(0,x.jsx)("div",{className:J.tooltip,children:(0,x.jsx)(Z.byK,{})})})})]}),(0,x.jsxs)("div",{className:J.textBoxContainer,children:[(0,x.jsx)(k,{id:f,name:m,fullWidth:!0,value:i,autoFocus:Y,disabled:C,onChange:n,type:ue,multiline:S,autoComplete:w,inputProps:ae,error:""!==I,helperText:I,placeholder:B,className:J.inputRebase,onKeyPress:ne,onFocus:re,onPaste:oe}),de&&(0,x.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,x.jsx)(d.Z,{onClick:K?function(){K()}:function(){return le(!se)},id:A,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),D&&(0,x.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==t?"withLabel":""),children:D})]})]})})}))},84741:function(e,t,n){"use strict";var r=n(29439),o=n(72791),a=n(11135),i=n(25787),c=n(71715),s=n(77865),l=n(80184);t.Z=(0,i.Z)((function(e){return(0,a.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,n=e.id,a=e.unitSelected,i=e.unitsList,d=e.disabled,u=void 0!==d&&d,p=e.onUnitChange,f=o.useState(null),m=(0,r.Z)(f,2),h=m[0],v=m[1],Z=Boolean(h),b=function(e){v(null),""!==e&&p&&p(e)};return(0,l.jsxs)(o.Fragment,{children:[(0,l.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":Z?"true":void 0,onClick:function(e){v(e.currentTarget)},className:t.buttonTrigger,disabled:u,type:"button",children:a}),(0,l.jsx)(c.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:h,open:Z,onClose:function(){b("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:i.map((function(e){return(0,l.jsx)(s.Z,{onClick:function(){return b(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},3579:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=i},20165:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=i},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},93840:function(e,t,n){"use strict";var r=n(72791).createContext(void 0);t.Z=r},76147:function(e,t,n){"use strict";function r(e){var t=e.props,n=e.states,r=e.muiFormControl;return n.reduce((function(e,n){return e[n]=t[n],r&&"undefined"===typeof t[n]&&(e[n]=r[n]),e}),{})}n.d(t,{Z:function(){return r}})},52930:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(72791),o=n(93840);function a(){return r.useContext(o.Z)}},17133:function(e,t,n){"use strict";var r=n(4942),o=n(63366),a=n(87462),i=n(72791),c=n(28182),s=n(94419),l=n(76147),d=n(52930),u=n(14036),p=n(31402),f=n(66934),m=n(10843),h=n(80184),v=["children","className","color","component","disabled","error","filled","focused","required"],Z=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return(0,a.Z)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})((function(e){var t,n=e.theme,o=e.ownerState;return(0,a.Z)({color:(n.vars||n).palette.text.secondary},n.typography.body1,(t={lineHeight:"1.4375em",padding:0,position:"relative"},(0,r.Z)(t,"&.".concat(m.Z.focused),{color:(n.vars||n).palette[o.color].main}),(0,r.Z)(t,"&.".concat(m.Z.disabled),{color:(n.vars||n).palette.text.disabled}),(0,r.Z)(t,"&.".concat(m.Z.error),{color:(n.vars||n).palette.error.main}),t))})),b=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,t){return t.asterisk}})((function(e){var t=e.theme;return(0,r.Z)({},"&.".concat(m.Z.error),{color:(t.vars||t).palette.error.main})})),x=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiFormLabel"}),r=n.children,i=n.className,f=n.component,x=void 0===f?"label":f,g=(0,o.Z)(n,v),k=(0,d.Z)(),w=(0,l.Z)({props:n,muiFormControl:k,states:["color","required","focused","disabled","error","filled"]}),y=(0,a.Z)({},n,{color:w.color||"primary",component:x,disabled:w.disabled,error:w.error,filled:w.filled,focused:w.focused,required:w.required}),C=function(e){var t=e.classes,n=e.color,r=e.focused,o=e.disabled,a=e.error,i=e.filled,c=e.required,l={root:["root","color".concat((0,u.Z)(n)),o&&"disabled",a&&"error",i&&"filled",r&&"focused",c&&"required"],asterisk:["asterisk",a&&"error"]};return(0,s.Z)(l,m.M,t)}(y);return(0,h.jsxs)(Z,(0,a.Z)({as:x,ownerState:y,className:(0,c.Z)(C.root,i),ref:t},g,{children:[r,w.required&&(0,h.jsxs)(b,{ownerState:y,"aria-hidden":!0,className:C.asterisk,children:["\u2009","*"]})]}))}));t.Z=x},10843:function(e,t,n){"use strict";n.d(t,{M:function(){return a}});var r=n(75878),o=n(21217);function a(e){return(0,o.Z)("MuiFormLabel",e)}var i=(0,r.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);t.Z=i},30829:function(e,t,n){"use strict";n.d(t,{Z:function(){return k}});var r=n(4942),o=n(63366),a=n(87462),i=n(72791),c=n(94419),s=n(28182),l=n(76147),d=n(52930),u=n(17133),p=n(10843),f=n(31402),m=n(66934),h=n(75878),v=n(21217);function Z(e){return(0,v.Z)("MuiInputLabel",e)}(0,h.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var b=n(80184),x=["disableAnimation","margin","shrink","variant","className"],g=(0,m.ZP)(u.Z,{shouldForwardProp:function(e){return(0,m.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,r.Z)({},"& .".concat(p.Z.asterisk),t.asterisk),t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,t[n.variant]]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),k=i.forwardRef((function(e,t){var n=(0,f.Z)({name:"MuiInputLabel",props:e}),r=n.disableAnimation,i=void 0!==r&&r,u=n.shrink,p=n.className,m=(0,o.Z)(n,x),h=(0,d.Z)(),v=u;"undefined"===typeof v&&h&&(v=h.filled||h.focused||h.adornedStart);var k=(0,l.Z)({props:n,muiFormControl:h,states:["size","variant","required"]}),w=(0,a.Z)({},n,{disableAnimation:i,formControl:h,shrink:v,size:k.size,variant:k.variant,required:k.required}),y=function(e){var t=e.classes,n=e.formControl,r=e.size,o=e.shrink,i={root:["root",n&&"formControl",!e.disableAnimation&&"animated",o&&"shrink","small"===r&&"sizeSmall",e.variant],asterisk:[e.required&&"asterisk"]},s=(0,c.Z)(i,Z,t);return(0,a.Z)({},t,s)}(w);return(0,b.jsx)(g,(0,a.Z)({"data-shrink":v,ownerState:w,ref:t,className:(0,s.Z)(y.root,p)},m,{classes:y}))}))},9955:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(4942),o=n(63366),a=n(87462),i=n(72791),c=n(28182),s=n(94419),l=n(12065),d=n(14036),u=n(97278),p=n(31402),f=n(66934),m=n(75878),h=n(21217);function v(e){return(0,h.Z)("MuiSwitch",e)}var Z=(0,m.Z)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),b=n(80184),x=["className","color","edge","size","sx"],g=(0,f.ZP)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.edge&&t["edge".concat((0,d.Z)(n.edge))],t["size".concat((0,d.Z)(n.size))]]}})((function(e){var t,n=e.ownerState;return(0,a.Z)({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"}},"start"===n.edge&&{marginLeft:-8},"end"===n.edge&&{marginRight:-8},"small"===n.size&&(t={width:40,height:24,padding:7},(0,r.Z)(t,"& .".concat(Z.thumb),{width:16,height:16}),(0,r.Z)(t,"& .".concat(Z.switchBase),(0,r.Z)({padding:4},"&.".concat(Z.checked),{transform:"translateX(16px)"})),t))})),k=(0,f.ZP)(u.Z,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:function(e,t){var n=e.ownerState;return[t.switchBase,(0,r.Z)({},"& .".concat(Z.input),t.input),"default"!==n.color&&t["color".concat((0,d.Z)(n.color))]]}})((function(e){var t,n=e.theme;return t={position:"absolute",top:0,left:0,zIndex:1,color:n.vars?n.vars.palette.Switch.defaultColor:"".concat("light"===n.palette.mode?n.palette.common.white:n.palette.grey[300]),transition:n.transitions.create(["left","transform"],{duration:n.transitions.duration.shortest})},(0,r.Z)(t,"&.".concat(Z.checked),{transform:"translateX(20px)"}),(0,r.Z)(t,"&.".concat(Z.disabled),{color:n.vars?n.vars.palette.Switch.defaultDisabledColor:"".concat("light"===n.palette.mode?n.palette.grey[100]:n.palette.grey[600])}),(0,r.Z)(t,"&.".concat(Z.checked," + .").concat(Z.track),{opacity:.5}),(0,r.Z)(t,"&.".concat(Z.disabled," + .").concat(Z.track),{opacity:n.vars?n.vars.opacity.switchTrackDisabled:"".concat("light"===n.palette.mode?.12:.2)}),(0,r.Z)(t,"& .".concat(Z.input),{left:"-100%",width:"300%"}),t}),(function(e){var t,n=e.theme,o=e.ownerState;return(0,a.Z)({"&:hover":{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.action.activeChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)(n.palette.action.active,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==o.color&&(t={},(0,r.Z)(t,"&.".concat(Z.checked),(0,r.Z)({color:(n.vars||n).palette[o.color].main,"&:hover":{backgroundColor:n.vars?"rgba(".concat(n.vars.palette[o.color].mainChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)(n.palette[o.color].main,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&.".concat(Z.disabled),{color:n.vars?n.vars.palette.Switch["".concat(o.color,"DisabledColor")]:"".concat("light"===n.palette.mode?(0,l.$n)(n.palette[o.color].main,.62):(0,l._j)(n.palette[o.color].main,.55))})),(0,r.Z)(t,"&.".concat(Z.checked," + .").concat(Z.track),{backgroundColor:(n.vars||n).palette[o.color].main}),t))})),w=(0,f.ZP)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:function(e,t){return t.track}})((function(e){var t=e.theme;return{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:t.transitions.create(["opacity","background-color"],{duration:t.transitions.duration.shortest}),backgroundColor:t.vars?t.vars.palette.common.onBackground:"".concat("light"===t.palette.mode?t.palette.common.black:t.palette.common.white),opacity:t.vars?t.vars.opacity.switchTrack:"".concat("light"===t.palette.mode?.38:.3)}})),y=(0,f.ZP)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:function(e,t){return t.thumb}})((function(e){var t=e.theme;return{boxShadow:(t.vars||t).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}})),C=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiSwitch"}),r=n.className,i=n.color,l=void 0===i?"primary":i,u=n.edge,f=void 0!==u&&u,m=n.size,h=void 0===m?"medium":m,Z=n.sx,C=(0,o.Z)(n,x),j=(0,a.Z)({},n,{color:l,edge:f,size:h}),S=function(e){var t=e.classes,n=e.edge,r=e.size,o=e.color,i=e.checked,c=e.disabled,l={root:["root",n&&"edge".concat((0,d.Z)(n)),"size".concat((0,d.Z)(r))],switchBase:["switchBase","color".concat((0,d.Z)(o)),i&&"checked",c&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},u=(0,s.Z)(l,v,t);return(0,a.Z)({},t,u)}(j),F=(0,b.jsx)(y,{className:S.thumb,ownerState:j});return(0,b.jsxs)(g,{className:(0,c.Z)(S.root,r),sx:Z,ownerState:j,children:[(0,b.jsx)(k,(0,a.Z)({type:"checkbox",icon:F,checkedIcon:F,ref:t,ownerState:j},C,{classes:(0,a.Z)({},S,{root:S.switchBase})})),(0,b.jsx)(w,{className:S.track,ownerState:j})]})}))},97278:function(e,t,n){"use strict";n.d(t,{Z:function(){return k}});var r=n(29439),o=n(63366),a=n(87462),i=n(72791),c=n(28182),s=n(94419),l=n(14036),d=n(66934),u=n(98278),p=n(52930),f=n(95080),m=n(75878),h=n(21217);function v(e){return(0,h.Z)("PrivateSwitchBase",e)}(0,m.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var Z=n(80184),b=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],x=(0,d.ZP)(f.Z)((function(e){var t=e.ownerState;return(0,a.Z)({padding:9,borderRadius:"50%"},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})})),g=(0,d.ZP)("input")({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),k=i.forwardRef((function(e,t){var n=e.autoFocus,i=e.checked,d=e.checkedIcon,f=e.className,m=e.defaultChecked,h=e.disabled,k=e.disableFocusRipple,w=void 0!==k&&k,y=e.edge,C=void 0!==y&&y,j=e.icon,S=e.id,F=e.inputProps,z=e.inputRef,P=e.name,R=e.onBlur,N=e.onChange,I=e.onFocus,M=e.readOnly,q=e.required,L=void 0!==q&&q,B=e.tabIndex,O=e.type,E=e.value,A=(0,o.Z)(e,b),_=(0,u.Z)({controlled:i,default:Boolean(m),name:"SwitchBase",state:"checked"}),T=(0,r.Z)(_,2),W=T[0],D=T[1],V=(0,p.Z)(),$=h;V&&"undefined"===typeof $&&($=V.disabled);var K="checkbox"===O||"radio"===O,Q=(0,a.Z)({},e,{checked:W,disabled:$,disableFocusRipple:w,edge:C}),H=function(e){var t=e.classes,n=e.checked,r=e.disabled,o=e.edge,a={root:["root",n&&"checked",r&&"disabled",o&&"edge".concat((0,l.Z)(o))],input:["input"]};return(0,s.Z)(a,v,t)}(Q);return(0,Z.jsxs)(x,(0,a.Z)({component:"span",className:(0,c.Z)(H.root,f),centerRipple:!0,focusRipple:!w,disabled:$,tabIndex:null,role:void 0,onFocus:function(e){I&&I(e),V&&V.onFocus&&V.onFocus(e)},onBlur:function(e){R&&R(e),V&&V.onBlur&&V.onBlur(e)},ownerState:Q,ref:t},A,{children:[(0,Z.jsx)(g,(0,a.Z)({autoFocus:n,checked:i,defaultChecked:m,className:H.input,disabled:$,id:K?S:void 0,name:P,onChange:function(e){if(!e.nativeEvent.defaultPrevented){var t=e.target.checked;D(t),N&&N(e,t)}},readOnly:M,ref:z,required:L,ownerState:Q,tabIndex:B,type:O},"checkbox"===O&&void 0===E?{}:{value:E},F)),W?d:j]}))}))},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return c.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return l.Z},ownerDocument:function(){return d.Z},ownerWindow:function(){return u.Z},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return k},unstable_useEnhancedEffect:function(){return m.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return v},useControlled:function(){return Z.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return x.Z},useIsFocusVisible:function(){return g.Z}});var r=n(55902),o=n(14036),a=n(31260),i=n(76189),c=n(83199);var s=function(e,t){return function(){return null}},l=n(19103),d=n(98301),u=n(17602);n(87462);var p=function(e,t){return function(){return null}},f=n(62971).Z,m=n(40162),h=n(67384);var v=function(e,t,n,r,o){return null},Z=n(98278),b=n(89683),x=n(42071),g=n(23031),k={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n.\n\nimport React, { useEffect, useState } from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { BucketQuotaIcon, Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n calculateBytes,\n getBytes,\n k8sScalarUnitsExcluding,\n} from \"../../../../common/utils\";\n\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n}: IEnableQuotaProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"Ti\");\n const [validInput, setValidInput] = useState(false);\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n const unitCalc = calculateBytes(cfg.quota || 0, true, false, true);\n\n setQuotaSize(unitCalc.total.toString());\n setQuotaUnit(unitCalc.unit);\n setValidInput(true);\n }\n }\n }, [enabled, cfg]);\n\n useEffect(() => {\n const valRegExp = /^\\d*(?:\\.\\d{1,2})?$/;\n\n if (!quotaEnabled) {\n setValidInput(true);\n return;\n }\n\n setValidInput(valRegExp.test(quotaSize));\n }, [quotaEnabled, quotaSize]);\n\n const enableBucketEncryption = () => {\n if (loading || !validInput) {\n return;\n }\n\n api.buckets\n .setBucketQuota(selectedBucket, {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nexport default withStyles(styles)(EnableQuota);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { selectorTypes } from \"../SelectWrapper/SelectWrapper\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: selectorTypes[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"edge\", \"size\", \"sx\"];\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, darken, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport switchClasses, { getSwitchUtilityClass } from './switchClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n edge,\n size,\n color,\n checked,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n thumb: ['thumb'],\n track: ['track'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst SwitchRoot = styled('span', {\n name: 'MuiSwitch',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n width: 34 + 12 * 2,\n height: 14 + 12 * 2,\n overflow: 'hidden',\n padding: 12,\n boxSizing: 'border-box',\n position: 'relative',\n flexShrink: 0,\n zIndex: 0,\n // Reset the stacking context.\n verticalAlign: 'middle',\n // For correct alignment with the text.\n '@media print': {\n colorAdjust: 'exact'\n }\n}, ownerState.edge === 'start' && {\n marginLeft: -8\n}, ownerState.edge === 'end' && {\n marginRight: -8\n}, ownerState.size === 'small' && {\n width: 40,\n height: 24,\n padding: 7,\n [`& .${switchClasses.thumb}`]: {\n width: 16,\n height: 16\n },\n [`& .${switchClasses.switchBase}`]: {\n padding: 4,\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(16px)'\n }\n }\n}));\nconst SwitchSwitchBase = styled(SwitchBase, {\n name: 'MuiSwitch',\n slot: 'SwitchBase',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.switchBase, {\n [`& .${switchClasses.input}`]: styles.input\n }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme\n}) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n // Render above the focus ripple.\n color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n transition: theme.transitions.create(['left', 'transform'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${switchClasses.checked}`]: {\n transform: 'translateX(20px)'\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n opacity: 0.5\n },\n [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n },\n [`& .${switchClasses.input}`]: {\n left: '-100%',\n width: '300%'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${switchClasses.checked}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main,\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${switchClasses.disabled}`]: {\n color: theme.vars ? theme.vars.palette.Switch[`${ownerState.color}DisabledColor`] : `${theme.palette.mode === 'light' ? lighten(theme.palette[ownerState.color].main, 0.62) : darken(theme.palette[ownerState.color].main, 0.55)}`\n }\n },\n [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n}));\nconst SwitchTrack = styled('span', {\n name: 'MuiSwitch',\n slot: 'Track',\n overridesResolver: (props, styles) => styles.track\n})(({\n theme\n}) => ({\n height: '100%',\n width: '100%',\n borderRadius: 14 / 2,\n zIndex: -1,\n transition: theme.transitions.create(['opacity', 'background-color'], {\n duration: theme.transitions.duration.shortest\n }),\n backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n}));\nconst SwitchThumb = styled('span', {\n name: 'MuiSwitch',\n slot: 'Thumb',\n overridesResolver: (props, styles) => styles.thumb\n})(({\n theme\n}) => ({\n boxShadow: (theme.vars || theme).shadows[1],\n backgroundColor: 'currentColor',\n width: 20,\n height: 20,\n borderRadius: '50%'\n}));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSwitch'\n });\n const {\n className,\n color = 'primary',\n edge = false,\n size = 'medium',\n sx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n edge,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n className: classes.thumb,\n ownerState: ownerState\n });\n return /*#__PURE__*/_jsxs(SwitchRoot, {\n className: clsx(classes.root, className),\n sx: sx,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(SwitchSwitchBase, _extends({\n type: \"checkbox\",\n icon: icon,\n checkedIcon: icon,\n ref: ref,\n ownerState: ownerState\n }, other, {\n classes: _extends({}, classes, {\n root: classes.switchBase\n })\n })), /*#__PURE__*/_jsx(SwitchTrack, {\n className: classes.track,\n ownerState: ownerState\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The default checked state. Use when the component is not controlled.\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense switch styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n */\n value: PropTypes.any\n} : void 0;\nexport default Switch;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n checked,\n disabled,\n edge\n } = ownerState;\n const slots = {\n root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n input: ['input']\n };\n return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n ownerState\n}) => _extends({\n padding: 9,\n borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input')({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n const {\n autoFocus,\n checked: checkedProp,\n checkedIcon,\n className,\n defaultChecked,\n disabled: disabledProp,\n disableFocusRipple = false,\n edge = false,\n icon,\n id,\n inputProps,\n inputRef,\n name,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n required = false,\n tabIndex,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [checked, setCheckedState] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n });\n const muiFormControl = useFormControl();\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n const handleInputChange = event => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n if (onChange) {\n // TODO v6: remove the second argument.\n onChange(event, newChecked);\n }\n };\n let disabled = disabledProp;\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n const hasLabelFor = type === 'checkbox' || type === 'radio';\n const ownerState = _extends({}, props, {\n checked,\n disabled,\n disableFocusRipple,\n edge\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n component: \"span\",\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor ? id : undefined,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n ownerState: ownerState,\n tabIndex: tabIndex,\n type: type\n }, type === 'checkbox' && value === undefined ? {} : {\n value\n }, inputProps)), checked ? checkedIcon : icon]\n }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /*\n * @ignore\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","_ref","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","quotaEnabled","setQuotaEnabled","_useState5","_useState6","quotaSize","setQuotaSize","_useState7","_useState8","quotaUnit","setQuotaUnit","_useState9","_useState10","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketQuotaIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","setBucketQuota","amount","parseInt","getBytes","quota_type","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","Grid","container","item","xs","className","formScrollable","formFieldRow","FormSwitchWrapper","value","id","name","checked","onChange","event","target","label","React","InputBoxWrapper","validity","valid","required","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","modalButtonBar","Button","type","variant","onClick","LinearProgress","StyledSwitch","root","width","height","padding","margin","switchBase","transform","color","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","_ref$label","_ref$checked","_ref$disabled","_ref$switchOnly","switchOnly","_ref$tooltip","_ref$description","description","indicatorLabels","_ref$extraInputProps","extraInputProps","switchComponent","clsx","_defineProperty","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","textAlign","Typography","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","_ref$multiline","multiline","_ref$index","index","_ref$error","_ref$required","_ref$placeholder","placeholder","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","concat","IconButton","size","buttonTrigger","_React$useState","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","MenuItem","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","FormControlContext","formControlState","states","muiFormControl","reduce","acc","state","useFormControl","_excluded","FormLabelRoot","styled","slot","overridesResolver","styles","ownerState","_extends","colorSecondary","filled","_ref2","_extends2","vars","text","secondary","typography","body1","lineHeight","formLabelClasses","focused","main","AsteriskComponent","asterisk","_ref3","FormLabel","inProps","ref","useThemeProps","_props$component","other","_objectWithoutPropertiesLoose","fcs","slots","capitalize","composeClasses","getFormLabelUtilityClasses","useUtilityClasses","as","generateUtilityClass","generateUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","sizeSmall","shrink","disableAnimation","animated","whiteSpace","overflow","textOverflow","left","duration","shorter","easing","easeOut","zIndex","pointerEvents","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses","getSwitchUtilityClass","SwitchRoot","edge","boxSizing","flexShrink","verticalAlign","colorAdjust","marginRight","switchClasses","SwitchSwitchBase","SwitchBase","input","_ref4","_ref5","defaultColor","mode","grey","shortest","defaultDisabledColor","switchTrackDisabled","_ref6","_ref7","action","activeChannel","hoverOpacity","alpha","active","mainChannel","lighten","darken","SwitchTrack","_ref8","onBackground","black","switchTrack","SwitchThumb","_ref9","shadows","_props$color","_props$edge","_props$size","sx","icon","checkedIcon","getSwitchBaseUtilityClass","SwitchBaseRoot","ButtonBase","SwitchBaseInput","cursor","checkedProp","defaultChecked","disabledProp","_props$disableFocusRi","inputRef","onBlur","readOnly","_props$required","tabIndex","_useControlled","useControlled","controlled","_useControlled2","setCheckedState","hasLabelFor","centerRipple","focusRipple","role","nativeEvent","defaultPrevented","newChecked","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","_len","arguments","funcs","Array","_key","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.2dfa540d.chunk.js b/portal-ui/build/static/js/1604.2dfa540d.chunk.js
new file mode 100644
index 000000000..ebb3eed77
--- /dev/null
+++ b/portal-ui/build/static/js/1604.2dfa540d.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1604],{1604:function(e,t,n){n.r(t);var a=n(29439),i=n(72791),o=n(29945),l=n(31776),u=n(66315),r=n(82342),s=n(40986),c=n(23814),d=n(87995),f=n(81551),m=n(56028),b=n(80184);t.default=function(e){var t=e.open,n=e.bucketName,h=e.closeModalAndRefresh,p=(0,f.TL)(),v=(0,i.useState)(!1),g=(0,a.Z)(v,2),x=g[0],y=g[1],C=(0,i.useState)(!0),j=(0,a.Z)(C,2),k=j[0],S=j[1],Z=(0,i.useState)(u.oO.Compliance),R=(0,a.Z)(Z,2),_=R[0],z=R[1],N=(0,i.useState)(u.zR.Days),w=(0,a.Z)(N,2),B=w[0],D=w[1],O=(0,i.useState)(1),E=(0,a.Z)(O,2),V=E[0],A=E[1],M=(0,i.useState)(!1),Y=(0,a.Z)(M,2),q=Y[0],G=Y[1];return(0,i.useEffect)((function(){Number.isNaN(V)||(V||1)<1?G(!1):G(!0)}),[V]),(0,i.useEffect)((function(){k&&l.h.buckets.getBucketRetentionConfig(n).then((function(e){S(!1),z(e.data.mode),A(e.data.validity),D(e.data.unit)})).catch((function(){S(!1)}))}),[k,n]),(0,b.jsx)(m.Z,{title:"Set Retention Configuration",modalOpen:t,onClose:function(){h()},children:k?(0,b.jsx)(o.aNw,{style:{width:16,height:16}}):(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),x||(y(!0),l.h.buckets.setBucketRetentionConfig(n,{mode:_||u.oO.Compliance,unit:B||u.zR.Days,validity:V||1}).then((function(){y(!1),h()})).catch((function(e){y(!1),p((0,d.zb)((0,r.g)(e.error)))})))},children:(0,b.jsxs)(o.ltY,{containerPadding:!1,withBorders:!1,children:[(0,b.jsx)(o.Eep,{currentValue:_,id:"retention_mode",name:"retention_mode",label:"Retention Mode",onChange:function(e){z(e.target.value)},selectorOptions:[{value:"compliance",label:"Compliance"},{value:"governance",label:"Governance"}]}),(0,b.jsx)(o.Eep,{currentValue:B,id:"retention_unit",name:"retention_unit",label:"Retention Unit",onChange:function(e){D(e.target.value)},selectorOptions:[{value:"days",label:"Days"},{value:"years",label:"Years"}]}),(0,b.jsx)(o.Wzg,{type:"number",id:"retention_validity",name:"retention_validity",onChange:function(e){A(e.target.valueAsNumber)},label:"Retention Validity",value:String(V),required:!0,min:"1"}),(0,b.jsxs)(o.rjZ,{item:!0,xs:12,sx:c.ID.modalButtonBar,children:[(0,b.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:x,onClick:function(){h()},label:"Cancel"}),(0,b.jsx)(o.zxk,{id:"set",type:"submit",variant:"callAction",color:"primary",disabled:x||!q,label:"Set"})]}),x&&(0,b.jsx)(o.rjZ,{item:!0,xs:12,children:(0,b.jsx)(s.Z,{})})]})})})}}}]);
+//# sourceMappingURL=1604.2dfa540d.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.2dfa540d.chunk.js.map b/portal-ui/build/static/js/1604.2dfa540d.chunk.js.map
new file mode 100644
index 000000000..33210174d
--- /dev/null
+++ b/portal-ui/build/static/js/1604.2dfa540d.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1604.2dfa540d.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Loader, Grid, FormLayout, RadioGroup, InputBox } from \"mds\";\nimport { api } from \"api\";\nimport { ObjectRetentionMode, ObjectRetentionUnit } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { LinearProgress } from \"@mui/material\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionConfigProps {\n open: boolean;\n bucketName: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetRetentionConfig = ({\n open,\n bucketName,\n closeModalAndRefresh,\n}: ISetRetentionConfigProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [loadingForm, setLoadingForm] = useState(true);\n const [retentionMode, setRetentionMode] = useState<\n ObjectRetentionMode | undefined\n >(ObjectRetentionMode.Compliance);\n const [retentionUnit, setRetentionUnit] = useState<\n ObjectRetentionUnit | undefined\n >(ObjectRetentionUnit.Days);\n const [retentionValidity, setRetentionValidity] = useState<\n number | undefined\n >(1);\n const [valid, setValid] = useState(false);\n\n const setRetention = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .setBucketRetentionConfig(bucketName, {\n mode: retentionMode || ObjectRetentionMode.Compliance,\n unit: retentionUnit || ObjectRetentionUnit.Days,\n validity: retentionValidity || 1,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n useEffect(() => {\n if (Number.isNaN(retentionValidity) || (retentionValidity || 1) < 1) {\n setValid(false);\n return;\n }\n setValid(true);\n }, [retentionValidity]);\n\n useEffect(() => {\n if (loadingForm) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingForm(false);\n\n // We set default values\n setRetentionMode(res.data.mode);\n setRetentionValidity(res.data.validity);\n setRetentionUnit(res.data.unit);\n })\n .catch(() => {\n setLoadingForm(false);\n });\n }\n }, [loadingForm, bucketName]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n >\n {loadingForm ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default SetRetentionConfig;\n"],"names":["_ref","open","bucketName","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","loadingForm","setLoadingForm","_useState5","ObjectRetentionMode","Compliance","_useState6","retentionMode","setRetentionMode","_useState7","ObjectRetentionUnit","Days","_useState8","retentionUnit","setRetentionUnit","_useState9","_useState10","retentionValidity","setRetentionValidity","_useState11","_useState12","valid","setValid","useEffect","Number","isNaN","api","buckets","getBucketRetentionConfig","then","res","data","mode","validity","unit","catch","_jsx","ModalWrapper","title","modalOpen","onClose","children","Loader","style","width","height","noValidate","autoComplete","onSubmit","e","preventDefault","setBucketRetentionConfig","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","containerPadding","withBorders","RadioGroup","currentValue","id","name","label","onChange","target","value","selectorOptions","InputBox","type","valueAsNumber","String","required","min","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","variant","disabled","onClick","color","LinearProgress"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1690.416d7e98.chunk.js b/portal-ui/build/static/js/1690.416d7e98.chunk.js
deleted file mode 100644
index 474823dc6..000000000
--- a/portal-ui/build/static/js/1690.416d7e98.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1690],{14917:function(e,n,t){"use strict";t(72791);var r=t(61889),i=t(72455),o=t(80184),s=(0,i.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,i=e.subTitle,a=e.actions,l=e.className,c=s();return(0,o.jsx)(r.ZP,{container:!0,children:(0,o.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(c.stContainer," ").concat(l||""),children:[(0,o.jsxs)("div",{className:c.leftItems,children:[n?(0,o.jsx)("div",{className:c.headerBarIcon,children:n}):null,(0,o.jsxs)("div",{className:c.titleColumn,children:[(0,o.jsx)("h1",{style:{margin:0},children:t}),(0,o.jsx)("span",{className:c.headerBarSubheader,children:i})]})]}),(0,o.jsx)("div",{className:c.rightItems,children:a})]})})}},59197:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var r=t(1413),i=t(72791),o=t(4942),s=t(63366),a=t(87462),l=t(28182),c=t(82466),u=t(94419),d=t(21217),f=(0,t(44046).ZP)(),p=t(86083),x=t(78519),h=t(85080),m=t(51184),g=t(45682),v=t(80184),y=["component","direction","spacing","divider","children","className","useFlexGap"],j=(0,h.Z)(),b=f("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}});function Z(e){return(0,p.Z)({props:e,name:"MuiStack",defaultTheme:j})}function k(e,n){var t=i.Children.toArray(e).filter(Boolean);return t.reduce((function(e,r,o){return e.push(r),o0?l[t[n-1]]:"column";l[e]=r}}));r=(0,c.Z)(r,(0,m.k9)({theme:t},u,(function(e,t){return n.useFlexGap?{gap:(0,g.NA)(i,e)}:{"& > :not(style) + :not(style)":(0,o.Z)({margin:0},"margin".concat((r=t?l[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[r])),(0,g.NA)(i,e))};var r})))}return r=(0,m.dt)(t.breakpoints,r)};var w=t(66934),S=t(31402),D=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.createStyledComponent,t=void 0===n?b:n,r=e.useThemeProps,o=void 0===r?Z:r,c=e.componentName,f=void 0===c?"MuiStack":c,p=t(C),h=i.forwardRef((function(e,n){var t=o(e),r=(0,x.Z)(t),i=r.component,c=void 0===i?"div":i,h=r.direction,m=void 0===h?"column":h,g=r.spacing,j=void 0===g?0:g,b=r.divider,Z=r.children,C=r.className,w=r.useFlexGap,S=void 0!==w&&w,D=(0,s.Z)(r,y),P={direction:m,spacing:j,useFlexGap:S},N=(0,u.Z)({root:["root"]},(function(e){return(0,d.Z)(f,e)}),{});return(0,v.jsx)(p,(0,a.Z)({as:c,ownerState:P,ref:n,className:(0,l.Z)(N.root,C)},D,{children:b?k(Z,b):Z}))}));return h}({createStyledComponent:(0,w.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}}),useThemeProps:function(e){return(0,S.Z)({props:e,name:"MuiStack"})}}),P=D,N=function(e){var n=e.label,t=void 0===n?null:n,i=e.value,o=void 0===i?"-":i,s=e.orientation,a=void 0===s?"column":s,l=e.stkProps,c=void 0===l?{}:l,u=e.lblProps,d=void 0===u?{}:u,f=e.valProps,p=void 0===f?{}:f;return(0,v.jsxs)(P,(0,r.Z)((0,r.Z)({direction:{xs:"column",sm:a}},c),{},{children:[(0,v.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:600}},d),{},{children:t})),(0,v.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:500}},p),{},{children:o}))]}))}},90767:function(e,n,t){"use strict";var r=t(29439),i=t(1413),o=t(72791),s=t(40986),a=t(51691),l=t(11135),c=t(25787),u=t(23814),d=t(23508),f=t(29945),p=t(87995),x=t(81551),h=t(31776),m=t(82342),g=t(80184);n.Z=(0,c.Z)((function(e){return(0,l.Z)((0,i.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},u.Qw))}))((function(e){var n=e.classes,t=e.configurationName,i=e.closeResetModalAndRefresh,l=e.resetOpen,c=(0,x.TL)(),u=(0,o.useState)(!1),v=(0,r.Z)(u,2),y=v[0],j=v[1];(0,o.useEffect)((function(){y&&h.h.configs.resetConfig(t).then((function(){j(!1),i(!0)})).catch((function(e){j(!1),c((0,p.Ih)((0,m.g)(e.error)))}))}),[i,t,y,c]);return(0,g.jsx)(d.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:l,titleIcon:(0,g.jsx)(f.NvT,{}),isLoading:y,onConfirm:function(){j(!0)},onClose:function(){i(!1)},confirmationContent:(0,g.jsxs)(o.Fragment,{children:[y&&(0,g.jsx)(s.Z,{}),(0,g.jsxs)(a.Z,{children:["Are you sure you want to restore these configurations to default values?",(0,g.jsx)("br",{}),(0,g.jsx)("b",{className:n.wrapText,children:"Please note that this may cause your system to not be accessible"})]})]})})}))},37099:function(e,n,t){"use strict";var r=t(72791),i=t(29945),o=t(80184),s=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(e){var n=e.helpText,t=e.docLink,a=e.docText,l=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:n})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[l.map((function(e,n){return(0,o.jsxs)(r.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(s,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(n))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:t,target:"_blank",rel:"noopener",children:a})})]})]})}},11690:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return I}});var r=t(4942),i=t(1413),o=t(74165),s=t(15861),a=t(29439),l=t(72791),c=t(29945),u=t(31776),d=t(82342),f=t(81551),p=t(87995),x=t(79979),h=t(14917),m=t(59197),g=t(47974),v=t(37099),y=t(93433),j=t(78687),b=t(99779),Z=t(80184),k=function(e){var n=e.name;return(0,Z.jsxs)("h4",{children:[(0,Z.jsx)(c.ZyT,{style:{transform:"rotateZ(90deg)"}}),n]})},C=function(e){var n=e.blockName,t=e.results;return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsxs)("strong",{children:[n,":"]}),(0,Z.jsx)("ul",{children:t.map((function(e,t){return(0,Z.jsx)("li",{children:e},"policy-".concat(n,"-").concat(t))}))})]})},w=function(e){var n,t,r,i,o,s,a=e.entityName,u=e.results,d=0;switch(a){case"Group":d=(null===(n=u.groups)||void 0===n?void 0:n.length)||0;break;case"Policy":d=(null===(t=u.policies)||void 0===t?void 0:t.length)||0;break;case"User":d=(null===(r=u.users)||void 0===r?void 0:r.length)||0}return(0,Z.jsxs)(c.xuv,{className:"resultElement",sx:{marginTop:50,"&:first-of-type":{marginTop:0}},children:[(0,Z.jsxs)(c.NZf,{separator:!0,sx:{fontSize:12},icon:(0,Z.jsx)(c.anK,{style:{width:17,height:17}}),actions:(0,Z.jsxs)(c.xuv,{sx:{fontSize:14},children:[(0,Z.jsx)("strong",{children:d})," Entit",1===d?"y":"ies"," Found"]}),children:[a," Mappings"]}),(0,Z.jsxs)(c.xuv,{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"===a&&(null===(i=u.groups)||void 0===i?void 0:i.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.group||""}),e.policies&&(0,Z.jsx)(C,{blockName:"Policies",results:e.policies})]},"policy-res-".concat(n))}))),"User"===a&&(null===(o=u.users)||void 0===o?void 0:o.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.user||""}),e.policies&&(0,Z.jsx)(C,{blockName:"Policies",results:e.policies})]},"users-res-".concat(n))}))),"Policy"===a&&(null===(s=u.policies)||void 0===s?void 0:s.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.policy||""}),e.groups&&(0,Z.jsx)(C,{blockName:"Groups",results:e.groups}),e.users&&(0,Z.jsx)(C,{blockName:"Users",results:e.users})]},"policy-map-".concat(n))})))]})]})},S=t(58400),D=function(){var e=(0,f.TL)(),n=(0,l.useState)(!1),t=(0,a.Z)(n,2),r=t[0],i=t[1],o=(0,l.useState)([""]),s=(0,a.Z)(o,2),x=s[0],h=s[1],m=(0,l.useState)([""]),g=(0,a.Z)(m,2),v=g[0],k=g[1],C=(0,l.useState)(null),D=(0,a.Z)(C,2),P=D[0],N=D[1],_=(0,j.v9)((function(e){return e.createUser.selectedPolicies}));return(0,Z.jsxs)(c.xuv,{sx:{marginTop:15,paddingTop:0},children:[(0,Z.jsxs)(c.rjZ,{container:!0,sx:{marginTop:5},children:[(0,Z.jsxs)(c.rjZ,{item:!0,sm:12,md:6,lg:5,sx:{padding:10,paddingTop:0},children:[(0,Z.jsx)(c.NZf,{children:"Query Filters"}),(0,Z.jsxs)(c.xuv,{sx:{padding:"0 10px",display:"flex",flexDirection:"column",gap:40},children:[(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)(c.xuv,{sx:{display:"flex"},children:(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Users"})}),(0,Z.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:250,"& > div > div":{width:"100%"}},children:x.map((function(e,n){return(0,Z.jsx)(c.Wzg,{id:"search-user-".concat(n),value:e,onChange:function(e){var t=(0,y.Z)(x);t[n]=e.target.value,h(t)},overlayIcon:x.length===n+1?(0,Z.jsx)(c.dtP,{}):(0,Z.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,y.Z)(x),[""]);h(t)}else{var r=x.filter((function(e,t){return t!==n}));h(r)}}(x.length===n+1,n)}},"search-user-".concat(n))}))})]}),(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Groups"}),(0,Z.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:"calc(100vh - 340px)","& > div > div":{width:"100%"}},children:v.map((function(e,n){return(0,Z.jsx)(c.Wzg,{id:"search-group-".concat(n),value:e,onChange:function(e){var t=(0,y.Z)(v);t[n]=e.target.value,k(t)},overlayIcon:v.length===n+1?(0,Z.jsx)(c.dtP,{}):(0,Z.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,y.Z)(v),[""]);k(t)}else{var r=v.filter((function(e,t){return t!==n}));k(r)}}(v.length===n+1,n)}},"search-group-".concat(n))}))})]}),(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Policies"}),(0,Z.jsx)(c.xuv,{sx:{minHeight:265,maxHeight:"calc(100vh - 740px)"},children:(0,Z.jsx)(S.Z,{selectedPolicy:_,noTitle:!0})})]})]})]}),(0,Z.jsx)(c.rjZ,{item:!0,sm:12,md:6,lg:7,sx:{padding:10,paddingTop:0,display:"flex",flexDirection:"column"},children:r?(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,Z.jsx)(c.aNw,{})}):(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.NZf,{actions:(0,Z.jsx)(c.xuv,{sx:{display:"flex",flexDirection:"row",alignItems:"center",fontSize:14},children:null!==P&&void 0!==P&&P.timestamp?(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.wZd,{style:{width:14,height:14,marginRight:5,fill:"#BEBFBF"}}),b.ou.fromISO(P.timestamp).toFormat("D HH:mm:ss")]}):""}),children:"Query Results"}),P?(0,Z.jsxs)(c.xuv,{sx:{backgroundColor:"#FBFAFA",padding:"8px 22px",flexGrow:1,overflowY:"auto"},children:[!P.groups&&!P.users&&!P.policies&&(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,Z.jsx)("h4",{children:"No Results Available"})}),!!P.groups&&(0,Z.jsx)(w,{results:P,entityName:"Group"}),!!P.users&&(0,Z.jsx)(w,{results:P,entityName:"User"}),!!P.policies&&(0,Z.jsx)(w,{results:P,entityName:"Policy"})]}):(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:"No query results yet"})]})})]}),(0,Z.jsx)(c.rjZ,{container:!0,children:(0,Z.jsx)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-start",marginTop:45,padding:"0 20px"},children:(0,Z.jsx)(c.zxk,{id:"search-entity",type:"button",variant:"callAction",onClick:function(){i(!0);var n={},t=_.filter((function(e){return""!==e})),r=x.filter((function(e){return""!==e})),o=v.filter((function(e){return""!==e}));t.length>0&&(n.policies=t),r.length>0&&(n.users=r),o.length>0&&(n.groups=o),u.h.ldapEntities.getLdapEntities(n).then((function(e){N(e.data),i(!1)})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error))),i(!1)}))},icon:(0,Z.jsx)(c.W1M,{}),children:"Search"})})})]})},P=t(90767),N=t(99670),_=["server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter"],I=function(){var e=(0,f.TL)(),n=x.iR,t=(0,l.useState)(!0),y=(0,a.Z)(t,2),j=y[0],b=y[1],k=(0,l.useState)(!1),C=(0,a.Z)(k,2),w=C[0],S=C[1],I=(0,l.useState)(!1),E=(0,a.Z)(I,2),A=E[0],F=E[1],L=(0,l.useState)({}),B=(0,a.Z)(L,2),R=B[0],q=B[1],T=(0,l.useState)(void 0),O=(0,a.Z)(T,2),M=O[0],z=O[1],U=(0,l.useState)(!1),G=(0,a.Z)(U,2),H=G[0],K=G[1],W=(0,l.useState)(!1),Y=(0,a.Z)(W,2),Q=Y[0],V=Y[1],$=(0,l.useState)("configuration"),X=(0,a.Z)($,2),J=X[0],ee=X[1],ne=function(){H&&M&&te(M),K(!H)},te=function(e){var n={};if(e&&e.length>0){var t=e.find((function(e){return"enable"===e.key})),r=0;e.forEach((function(e){n[e.key]=e.value,_.includes(e.key)&&e.value&&""!==e.value&&"off"!==e.value&&r++}));var i=r===_.length;t&&"on"!==t.value||!i?S(!1):S(!0),F(i)}q(n)};(0,l.useEffect)((function(){j&&u.h.configs.configInfo("identity_ldap").then((function(e){e.data.length>0&&(z(e.data[0].key_values),te(e.data[0].key_values||[])),b(!1)})).catch((function(n){b(!1),e((0,p.Ih)((0,d.g)(n.error)))}))}),[e,j]);var re=function(){var n=(0,s.Z)((0,o.Z)().mark((function n(t){return(0,o.Z)().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:V(!1),t&&(e((0,p.cN)(t)),z(void 0),q({}),S(!1),F(!1),K(!1));case 2:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}();return(0,l.useEffect)((function(){e((0,p.Sc)("LDAP"))}),[]),(0,Z.jsxs)(c.rjZ,{item:!0,xs:12,children:[Q&&(0,Z.jsx)(P.Z,{configurationName:"identity_ldap",closeResetModalAndRefresh:re,resetOpen:Q}),(0,Z.jsx)(g.Z,{label:"LDAP",actions:(0,Z.jsx)(N.Z,{})}),(0,Z.jsx)(c.Xgh,{variant:"constrained",children:(0,Z.jsx)(c.mQc,{horizontal:!0,options:[{tabConfig:{id:"configuration",label:"Configuration"},content:(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(h.Z,{title:H?"Edit Configuration":"",actions:H?null:(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.zxk,{id:"edit",type:"button",variant:"callAction",icon:(0,Z.jsx)(c.dY8,{}),onClick:ne,label:"Edit Configuration",disabled:j}),A&&(0,Z.jsx)(c.zxk,{id:"is-configuration-enabled",onClick:function(){return function(n){var t={key_values:[{key:"enable",value:n?"on":"off"}]};u.h.configs.setConfig("identity_ldap",t).then((function(n){S(!w),e((0,p.cN)(n.data.restart||!1)),n.data.restart||e((0,p.y1)("Configuration saved successfully"))})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error)))}))}(!w)},label:w?"Disable LDAP":"Enable LDAP",variant:w?"secondary":"regular"}),(0,Z.jsx)(c.zxk,{id:"refresh-idp-config",onClick:function(){return b(!0)},label:"Refresh",icon:(0,Z.jsx)(c.DuK,{})})]})}),(0,Z.jsx)("br",{}),j?(0,Z.jsx)(c.xuv,{sx:{display:"flex",justifyContent:"center",marginTop:10},children:(0,Z.jsx)(c.aNw,{})}):(0,Z.jsx)(l.Fragment,{children:H?(0,Z.jsx)(l.Fragment,{children:(0,Z.jsxs)(c.ltY,{helpBox:(0,Z.jsx)(v.Z,{helpText:"Learn more about LDAP Configurations",contents:x.Si,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:[Object.entries(n).map((function(e){var n=(0,a.Z)(e,2);return function(e,n){return"toggle"===n.type?(0,Z.jsx)(c.rsf,{indicatorLabels:["Enabled","Disabled"],checked:"on"===R[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:n.label,tooltip:n.tooltip,onChange:function(n){return q((0,i.Z)((0,i.Z)({},R),{},(0,r.Z)({},e,n.target.checked?"on":"off")))},description:"",disabled:!H},e):(0,Z.jsx)(c.Wzg,{id:e,required:n.required,name:e,label:n.label,tooltip:n.tooltip,error:n.hasError(R[e],H),value:R[e]?R[e]:"",onChange:function(n){return q((0,i.Z)((0,i.Z)({},R),{},(0,r.Z)({},e,n.target.value)))},placeholder:n.placeholder,disabled:!H,type:n.type},e)}(n[0],n[1])})),(0,Z.jsxs)(c.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[H&&(0,Z.jsx)(c.zxk,{id:"clear",type:"button",variant:"secondary",onClick:function(){return V(!0)},label:"Reset Configuration"}),H&&(0,Z.jsx)(c.zxk,{id:"cancel",type:"button",variant:"regular",onClick:ne,label:"Cancel"}),H&&(0,Z.jsx)(c.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:j||!function(){for(var e=0,t=Object.entries(n);e0?(0,h.jsxs)(o.Fragment,{children:[(0,h.jsx)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){P(e)},value:D,label:t?"":"Assign Policies"})}),(0,h.jsx)(a.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,o=(0,r.Z)(N);i?o.push(t):o=o.filter((function(e){return e!==t})),o=o.filter((function(e){return""!==e})),m((0,f.ue)(o))},selectedItems:N,isLoading:k,records:I,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(a.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},21639:function(e,n,t){"use strict";t.d(n,{KE:function(){return s},LQ:function(){return r},V2:function(){return o},g4:function(){return i}});var r=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n
{title}
\n {subTitle}\n
\n
\n\n
{actions}
\n \n \n );\n};\n\nexport default ScreenTitle;\n","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","import PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...deleteDialogStyles,\n });\n\ninterface IResetConfiguration {\n classes: any;\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n classes,\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.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 withStyles(styles)(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 {!!results.groups && (\n \n )}\n {!!results.users && (\n \n )}\n {!!results.policies && (\n \n )}\n \n ) : (\n No query results yet\n )}\n \n )}\n \n \n \n \n }\n >\n Search\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 EditIcon,\n FormLayout,\n Grid,\n InputBox,\n Loader,\n PageLayout,\n RefreshIcon,\n Switch,\n Tabs,\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 ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\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 \"lookup_bind_password\",\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 [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\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 if (record && record.length > 0) {\n const enabled = record.find((item: any) => item.key === \"enable\");\n\n let totalCoincidences = 0;\n\n record.forEach((item: any) => {\n fields[item.key] = item.value;\n\n if (\n enabledConfigLDAP.includes(item.key) &&\n item.value &&\n item.value !== \"\" &&\n item.value !== \"off\"\n ) {\n totalCoincidences++;\n }\n });\n\n const hasConfig = totalCoincidences === enabledConfigLDAP.length;\n\n if ((!enabled || enabled.value === \"on\") && hasConfig) {\n setIsEnabled(true);\n } else {\n setIsEnabled(false);\n }\n\n setHasConfiguration(hasConfig);\n }\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\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 onClick={toggleEditMode}\n label={\"Edit Configuration\"}\n disabled={loading}\n />\n {hasConfiguration && (\n toggleConfiguration(!isEnabled)}\n label={isEnabled ? \"Disable LDAP\" : \"Enable LDAP\"}\n variant={isEnabled ? \"secondary\" : \"regular\"}\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 {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && (\n setResetOpen(true)}\n label={\"Reset Configuration\"}\n />\n )}\n {editMode && (\n \n )}\n {editMode && (\n \n )}\n \n \n \n ) : (\n \n \n \n {hasConfiguration && (\n \n {Object.entries(formFields).map(\n ([key, value]) => (\n \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 LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } 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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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: \"(sAMAcountName=%s)\",\n type: \"text\",\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 },\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 },\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { DataTable, Grid, Box } 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\";\nimport {\n Error,\n HttpResponse,\n ListPoliciesResponse,\n} from \"../../../api/consoleApi\";\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: HttpResponse) => {\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["useStyles","makeStyles","theme","headerBarIcon","marginRight","color","palette","primary","main","width","height","display","headerBarSubheader","maxWidth","stContainer","alignItems","justifyContent","padding","borderBottom","flexFlow","titleColumn","fontSize","leftItems","rightItems","marginLeft","_ref","icon","title","subTitle","actions","className","classes","_jsx","Grid","container","children","_jsxs","item","xs","concat","style","margin","createStyled","_excluded","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","name","slot","overridesResolver","props","styles","root","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","React","toArray","filter","Boolean","reduce","output","child","index","push","length","key","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","direction","breakpoints","propValue","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","deepmerge","useFlexGap","gap","getValue","_defineProperty","row","column","mergeBreakpointsInOrder","Stack","options","arguments","undefined","_options$createStyled","createStyledComponent","_options$useThemeProp","useThemeProps","_options$componentNam","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","_props$component","component","_props$direction","_props$spacing","divider","_props$useFlexGap","other","_objectWithoutPropertiesLoose","composeClasses","generateUtilityClass","as","clsx","createStack","styled","_ref$label","label","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","_objectSpread","sm","fontWeight","withStyles","createStyles","wrapText","whiteSpace","wordWrap","deleteDialogStyles","configurationName","closeResetModalAndRefresh","resetOpen","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","resetLoading","setResetLoading","useEffect","api","configs","resetConfig","then","catch","err","setErrorSnackMessage","errorToHandler","error","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmationContent","LinearProgress","DialogContentText","FeatureItem","description","Box","sx","marginBottom","fontStyle","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","paddingBottom","HelpIconFilled","map","content","Fragment","iconDescription","text","href","target","rel","EntityResultTitle","CollapseCaret","transform","EntityResultItems","blockName","results","res","_ref3","_results$groups","_results$policies","_results$users","_results$groups2","_results$users2","_results$policies2","entityName","entityLength","groups","policies","users","marginTop","SectionTitle","GroupsMenuIcon","h4","fill","groupData","group","user","policy","loading","setLoading","_useState3","_useState4","setUsers","_useState5","_useState6","setGroups","_useState7","_useState8","setResults","selectedPolicies","useSelector","state","createUser","paddingTop","md","lg","withBorders","overflowY","minHeight","maxHeight","userDat","InputBox","id","onChange","e","usersElements","_toConsumableArray","overlayIcon","AddIcon","RemoveIcon","overlayAction","addItem","alterUsers","filteredUsers","_","indx","alterUsersList","groupDat","groupsElements","alterGroups","filteredGroups","alterGroupsList","PolicySelectors","selectedPolicy","noTitle","textAlign","Loader","timestamp","TimeIcon","DateTime","fromISO","toFormat","backgroundColor","flexGrow","LDAPResultsBlock","Button","type","variant","onClick","data","cleanPolicies","pol","cleanUsers","usr","cleanGroups","grp","ldapEntities","getLdapEntities","result","SearchIcon","enabledConfigLDAP","formFields","ldapFormFields","isEnabled","setIsEnabled","hasConfiguration","setHasConfiguration","fields","setFields","_useState9","_useState10","record","setRecord","_useState11","_useState12","editMode","setEditMode","_useState13","_useState14","setResetOpen","_useState15","_useState16","curTab","setCurTab","toggleEditMode","parseFields","enabled","find","totalCoincidences","includes","hasConfig","configInfo","key_values","closeDeleteModalAndRefresh","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","setServerNeedsRestart","stop","_x","apply","setHelpName","ResetConfigurationModal","PageHeaderWrapper","HelpMenu","PageLayout","Tabs","horizontal","tabConfig","ScreenTitle","EditIcon","disabled","payload","setConfig","restart","setSnackBarMessage","toggleConfiguration","RefreshIcon","FormLayout","helpBox","AddIDPConfigurationHelpBox","ldapHelpBoxContents","entries","Switch","indicatorLabels","checked","tooltip","required","hasError","placeholder","renderFormField","_i","_Object$entries","_Object$entries$_i","validSave","keyVals","gridTemplateColumns","gridAutoFlow","LabelValuePair","_ref5","_ref6","LDAPEntitiesQuery","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","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_ref$noTitle","records","setRecords","setFilter","currentPolicies","fetchPolicies","useCallback","listPolicies","_res$data$policies","sort","policySort","setModalErrorSnackMessage","filteredRecords","elementItem","SearchBox","DataTable","columns","elementKey","onSelect","targetD","elements","element","setSelectedPolicies","selectedItems","idField","customPaperHeight","usersSort","a","b","accessKey","stringSort","policyDetailsSort","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","indexOf","muiName","_len","funcs","Array","_key","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1690.f30e8f7f.chunk.js b/portal-ui/build/static/js/1690.f30e8f7f.chunk.js
new file mode 100644
index 000000000..dd545a49c
--- /dev/null
+++ b/portal-ui/build/static/js/1690.f30e8f7f.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1690],{14917:function(e,n,t){"use strict";t(72791);var r=t(61889),i=t(72455),o=t(80184),s=(0,i.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,i=e.subTitle,a=e.actions,l=e.className,c=s();return(0,o.jsx)(r.ZP,{container:!0,children:(0,o.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(c.stContainer," ").concat(l||""),children:[(0,o.jsxs)("div",{className:c.leftItems,children:[n?(0,o.jsx)("div",{className:c.headerBarIcon,children:n}):null,(0,o.jsxs)("div",{className:c.titleColumn,children:[(0,o.jsx)("h1",{style:{margin:0},children:t}),(0,o.jsx)("span",{className:c.headerBarSubheader,children:i})]})]}),(0,o.jsx)("div",{className:c.rightItems,children:a})]})})}},59197:function(e,n,t){"use strict";t.d(n,{Z:function(){return _}});var r=t(1413),i=t(72791),o=t(4942),s=t(63366),a=t(87462),l=t(28182),c=t(82466),u=t(94419),d=t(21217),f=(0,t(44046).ZP)(),p=t(86083),x=t(78519),h=t(85080),m=t(51184),g=t(45682),v=t(80184),y=["component","direction","spacing","divider","children","className","useFlexGap"],j=(0,h.Z)(),b=f("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}});function Z(e){return(0,p.Z)({props:e,name:"MuiStack",defaultTheme:j})}function k(e,n){var t=i.Children.toArray(e).filter(Boolean);return t.reduce((function(e,r,o){return e.push(r),o0?l[t[n-1]]:"column";l[e]=r}}));r=(0,c.Z)(r,(0,m.k9)({theme:t},u,(function(e,t){return n.useFlexGap?{gap:(0,g.NA)(i,e)}:{"& > :not(style) + :not(style)":(0,o.Z)({margin:0},"margin".concat((r=t?l[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[r])),(0,g.NA)(i,e))};var r})))}return r=(0,m.dt)(t.breakpoints,r)};var w=t(66934),S=t(31402),D=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.createStyledComponent,t=void 0===n?b:n,r=e.useThemeProps,o=void 0===r?Z:r,c=e.componentName,f=void 0===c?"MuiStack":c,p=t(C),h=i.forwardRef((function(e,n){var t=o(e),r=(0,x.Z)(t),i=r.component,c=void 0===i?"div":i,h=r.direction,m=void 0===h?"column":h,g=r.spacing,j=void 0===g?0:g,b=r.divider,Z=r.children,C=r.className,w=r.useFlexGap,S=void 0!==w&&w,D=(0,s.Z)(r,y),P={direction:m,spacing:j,useFlexGap:S},_=(0,u.Z)({root:["root"]},(function(e){return(0,d.Z)(f,e)}),{});return(0,v.jsx)(p,(0,a.Z)({as:c,ownerState:P,ref:n,className:(0,l.Z)(_.root,C)},D,{children:b?k(Z,b):Z}))}));return h}({createStyledComponent:(0,w.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}}),useThemeProps:function(e){return(0,S.Z)({props:e,name:"MuiStack"})}}),P=D,_=function(e){var n=e.label,t=void 0===n?null:n,i=e.value,o=void 0===i?"-":i,s=e.orientation,a=void 0===s?"column":s,l=e.stkProps,c=void 0===l?{}:l,u=e.lblProps,d=void 0===u?{}:u,f=e.valProps,p=void 0===f?{}:f;return(0,v.jsxs)(P,(0,r.Z)((0,r.Z)({direction:{xs:"column",sm:a}},c),{},{children:[(0,v.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:600}},d),{},{children:t})),(0,v.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:500}},p),{},{children:o}))]}))}},90767:function(e,n,t){"use strict";var r=t(29439),i=t(72791),o=t(31776),s=t(82342),a=t(23508),l=t(40986),c=t(29945),u=t(87995),d=t(81551),f=t(80184);n.Z=function(e){var n=e.configurationName,t=e.closeResetModalAndRefresh,p=e.resetOpen,x=(0,d.TL)(),h=(0,i.useState)(!1),m=(0,r.Z)(h,2),g=m[0],v=m[1];(0,i.useEffect)((function(){g&&o.h.configs.resetConfig(n).then((function(){v(!1),t(!0)})).catch((function(e){v(!1),x((0,u.Ih)((0,s.g)(e.error)))}))}),[t,n,g,x]);return(0,f.jsx)(a.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:p,titleIcon:(0,f.jsx)(c.NvT,{}),isLoading:g,onConfirm:function(){v(!0)},onClose:function(){t(!1)},confirmationContent:(0,f.jsxs)(i.Fragment,{children:[g&&(0,f.jsx)(l.Z,{}),(0,f.jsxs)(i.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,f.jsx)("br",{}),(0,f.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}},37099:function(e,n,t){"use strict";var r=t(72791),i=t(29945),o=t(80184),s=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(e){var n=e.helpText,t=e.docLink,a=e.docText,l=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:n})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[l.map((function(e,n){return(0,o.jsxs)(r.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(s,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(n))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:t,target:"_blank",rel:"noopener",children:a})})]})]})}},11690:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return I}});var r=t(4942),i=t(1413),o=t(74165),s=t(15861),a=t(29439),l=t(72791),c=t(29945),u=t(31776),d=t(82342),f=t(81551),p=t(87995),x=t(79979),h=t(14917),m=t(59197),g=t(47974),v=t(37099),y=t(93433),j=t(78687),b=t(99779),Z=t(80184),k=function(e){var n=e.name;return(0,Z.jsxs)("h4",{children:[(0,Z.jsx)(c.ZyT,{style:{transform:"rotateZ(90deg)"}}),n]})},C=function(e){var n=e.blockName,t=e.results;return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsxs)("strong",{children:[n,":"]}),(0,Z.jsx)("ul",{children:t.map((function(e,t){return(0,Z.jsx)("li",{children:e},"policy-".concat(n,"-").concat(t))}))})]})},w=function(e){var n,t,r,i,o,s,a=e.entityName,u=e.results,d=0;switch(a){case"Group":d=(null===(n=u.groups)||void 0===n?void 0:n.length)||0;break;case"Policy":d=(null===(t=u.policies)||void 0===t?void 0:t.length)||0;break;case"User":d=(null===(r=u.users)||void 0===r?void 0:r.length)||0}return(0,Z.jsxs)(c.xuv,{className:"resultElement",sx:{marginTop:50,"&:first-of-type":{marginTop:0}},children:[(0,Z.jsxs)(c.NZf,{separator:!0,sx:{fontSize:12},icon:(0,Z.jsx)(c.anK,{style:{width:17,height:17}}),actions:(0,Z.jsxs)(c.xuv,{sx:{fontSize:14},children:[(0,Z.jsx)("strong",{children:d})," Entit",1===d?"y":"ies"," Found"]}),children:[a," Mappings"]}),(0,Z.jsxs)(c.xuv,{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"===a&&(null===(i=u.groups)||void 0===i?void 0:i.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.group||""}),e.policies&&(0,Z.jsx)(C,{blockName:"Policies",results:e.policies})]},"policy-res-".concat(n))}))),"User"===a&&(null===(o=u.users)||void 0===o?void 0:o.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.user||""}),e.policies&&(0,Z.jsx)(C,{blockName:"Policies",results:e.policies})]},"users-res-".concat(n))}))),"Policy"===a&&(null===(s=u.policies)||void 0===s?void 0:s.map((function(e,n){return(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(k,{name:e.policy||""}),e.groups&&(0,Z.jsx)(C,{blockName:"Groups",results:e.groups}),e.users&&(0,Z.jsx)(C,{blockName:"Users",results:e.users})]},"policy-map-".concat(n))})))]})]})},S=t(58400),D=function(){var e=(0,f.TL)(),n=(0,l.useState)(!1),t=(0,a.Z)(n,2),r=t[0],i=t[1],o=(0,l.useState)([""]),s=(0,a.Z)(o,2),x=s[0],h=s[1],m=(0,l.useState)([""]),g=(0,a.Z)(m,2),v=g[0],k=g[1],C=(0,l.useState)(null),D=(0,a.Z)(C,2),P=D[0],_=D[1],N=(0,j.v9)((function(e){return e.createUser.selectedPolicies}));return(0,Z.jsxs)(c.xuv,{sx:{marginTop:15,paddingTop:0},children:[(0,Z.jsxs)(c.rjZ,{container:!0,sx:{marginTop:5},children:[(0,Z.jsxs)(c.rjZ,{item:!0,sm:12,md:6,lg:5,sx:{padding:10,paddingTop:0},children:[(0,Z.jsx)(c.NZf,{children:"Query Filters"}),(0,Z.jsxs)(c.xuv,{sx:{padding:"0 10px",display:"flex",flexDirection:"column",gap:40},children:[(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)(c.xuv,{sx:{display:"flex"},children:(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Users"})}),(0,Z.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:250,"& > div > div":{width:"100%"}},children:x.map((function(e,n){return(0,Z.jsx)(c.Wzg,{id:"search-user-".concat(n),value:e,onChange:function(e){var t=(0,y.Z)(x);t[n]=e.target.value,h(t)},overlayIcon:x.length===n+1?(0,Z.jsx)(c.dtP,{}):(0,Z.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,y.Z)(x),[""]);h(t)}else{var r=x.filter((function(e,t){return t!==n}));h(r)}}(x.length===n+1,n)}},"search-user-".concat(n))}))})]}),(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Groups"}),(0,Z.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:"calc(100vh - 340px)","& > div > div":{width:"100%"}},children:v.map((function(e,n){return(0,Z.jsx)(c.Wzg,{id:"search-group-".concat(n),value:e,onChange:function(e){var t=(0,y.Z)(v);t[n]=e.target.value,k(t)},overlayIcon:v.length===n+1?(0,Z.jsx)(c.dtP,{}):(0,Z.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,y.Z)(v),[""]);k(t)}else{var r=v.filter((function(e,t){return t!==n}));k(r)}}(v.length===n+1,n)}},"search-group-".concat(n))}))})]}),(0,Z.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,Z.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Policies"}),(0,Z.jsx)(c.xuv,{sx:{minHeight:265,maxHeight:"calc(100vh - 740px)"},children:(0,Z.jsx)(S.Z,{selectedPolicy:N,noTitle:!0})})]})]})]}),(0,Z.jsx)(c.rjZ,{item:!0,sm:12,md:6,lg:7,sx:{padding:10,paddingTop:0,display:"flex",flexDirection:"column"},children:r?(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,Z.jsx)(c.aNw,{})}):(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.NZf,{actions:(0,Z.jsx)(c.xuv,{sx:{display:"flex",flexDirection:"row",alignItems:"center",fontSize:14},children:null!==P&&void 0!==P&&P.timestamp?(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.wZd,{style:{width:14,height:14,marginRight:5,fill:"#BEBFBF"}}),b.ou.fromISO(P.timestamp).toFormat("D HH:mm:ss")]}):""}),children:"Query Results"}),P?(0,Z.jsxs)(c.xuv,{sx:{backgroundColor:"#FBFAFA",padding:"8px 22px",flexGrow:1,overflowY:"auto"},children:[!P.groups&&!P.users&&!P.policies&&(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,Z.jsx)("h4",{children:"No Results Available"})}),!!P.groups&&(0,Z.jsx)(w,{results:P,entityName:"Group"}),!!P.users&&(0,Z.jsx)(w,{results:P,entityName:"User"}),!!P.policies&&(0,Z.jsx)(w,{results:P,entityName:"Policy"})]}):(0,Z.jsx)(c.xuv,{sx:{textAlign:"center"},children:"No query results yet"})]})})]}),(0,Z.jsx)(c.rjZ,{container:!0,children:(0,Z.jsx)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-start",marginTop:45,padding:"0 20px"},children:(0,Z.jsx)(c.zxk,{id:"search-entity",type:"button",variant:"callAction",onClick:function(){i(!0);var n={},t=N.filter((function(e){return""!==e})),r=x.filter((function(e){return""!==e})),o=v.filter((function(e){return""!==e}));t.length>0&&(n.policies=t),r.length>0&&(n.users=r),o.length>0&&(n.groups=o),u.h.ldapEntities.getLdapEntities(n).then((function(e){_(e.data),i(!1)})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error))),i(!1)}))},icon:(0,Z.jsx)(c.W1M,{}),children:"Search"})})})]})},P=t(90767),_=t(99670),N=["server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter"],I=function(){var e=(0,f.TL)(),n=x.iR,t=(0,l.useState)(!0),y=(0,a.Z)(t,2),j=y[0],b=y[1],k=(0,l.useState)(!1),C=(0,a.Z)(k,2),w=C[0],S=C[1],I=(0,l.useState)(!1),E=(0,a.Z)(I,2),A=E[0],F=E[1],L=(0,l.useState)({}),B=(0,a.Z)(L,2),R=B[0],q=B[1],T=(0,l.useState)(void 0),O=(0,a.Z)(T,2),M=O[0],z=O[1],U=(0,l.useState)(!1),G=(0,a.Z)(U,2),H=G[0],K=G[1],W=(0,l.useState)(!1),Y=(0,a.Z)(W,2),Q=Y[0],V=Y[1],$=(0,l.useState)("configuration"),X=(0,a.Z)($,2),J=X[0],ee=X[1],ne=function(){H&&M&&te(M),K(!H)},te=function(e){var n={};if(e&&e.length>0){var t=e.find((function(e){return"enable"===e.key})),r=0;e.forEach((function(e){n[e.key]=e.value,N.includes(e.key)&&e.value&&""!==e.value&&"off"!==e.value&&r++}));var i=r===N.length;t&&"on"!==t.value||!i?S(!1):S(!0),F(i)}q(n)};(0,l.useEffect)((function(){j&&u.h.configs.configInfo("identity_ldap").then((function(e){e.data.length>0&&(z(e.data[0].key_values),te(e.data[0].key_values||[])),b(!1)})).catch((function(n){b(!1),e((0,p.Ih)((0,d.g)(n.error)))}))}),[e,j]);var re=function(){var n=(0,s.Z)((0,o.Z)().mark((function n(t){return(0,o.Z)().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:V(!1),t&&(e((0,p.cN)(t)),z(void 0),q({}),S(!1),F(!1),K(!1));case 2:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}();return(0,l.useEffect)((function(){e((0,p.Sc)("LDAP"))}),[]),(0,Z.jsxs)(c.rjZ,{item:!0,xs:12,children:[Q&&(0,Z.jsx)(P.Z,{configurationName:"identity_ldap",closeResetModalAndRefresh:re,resetOpen:Q}),(0,Z.jsx)(g.Z,{label:"LDAP",actions:(0,Z.jsx)(_.Z,{})}),(0,Z.jsx)(c.Xgh,{variant:"constrained",children:(0,Z.jsx)(c.mQc,{horizontal:!0,options:[{tabConfig:{id:"configuration",label:"Configuration"},content:(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(h.Z,{title:H?"Edit Configuration":"",actions:H?null:(0,Z.jsxs)(l.Fragment,{children:[(0,Z.jsx)(c.zxk,{id:"edit",type:"button",variant:"callAction",icon:(0,Z.jsx)(c.dY8,{}),onClick:ne,label:"Edit Configuration",disabled:j}),A&&(0,Z.jsx)(c.zxk,{id:"is-configuration-enabled",onClick:function(){return function(n){var t={key_values:[{key:"enable",value:n?"on":"off"}]};u.h.configs.setConfig("identity_ldap",t).then((function(n){S(!w),e((0,p.cN)(n.data.restart||!1)),n.data.restart||e((0,p.y1)("Configuration saved successfully"))})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error)))}))}(!w)},label:w?"Disable LDAP":"Enable LDAP",variant:w?"secondary":"regular"}),(0,Z.jsx)(c.zxk,{id:"refresh-idp-config",onClick:function(){return b(!0)},label:"Refresh",icon:(0,Z.jsx)(c.DuK,{})})]})}),(0,Z.jsx)("br",{}),j?(0,Z.jsx)(c.xuv,{sx:{display:"flex",justifyContent:"center",marginTop:10},children:(0,Z.jsx)(c.aNw,{})}):(0,Z.jsx)(l.Fragment,{children:H?(0,Z.jsx)(l.Fragment,{children:(0,Z.jsxs)(c.ltY,{helpBox:(0,Z.jsx)(v.Z,{helpText:"Learn more about LDAP Configurations",contents:x.Si,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:[Object.entries(n).map((function(e){var n=(0,a.Z)(e,2);return function(e,n){return"toggle"===n.type?(0,Z.jsx)(c.rsf,{indicatorLabels:["Enabled","Disabled"],checked:"on"===R[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:n.label,tooltip:n.tooltip,onChange:function(n){return q((0,i.Z)((0,i.Z)({},R),{},(0,r.Z)({},e,n.target.checked?"on":"off")))},description:"",disabled:!H},e):(0,Z.jsx)(c.Wzg,{id:e,required:n.required,name:e,label:n.label,tooltip:n.tooltip,error:n.hasError(R[e],H),value:R[e]?R[e]:"",onChange:function(n){return q((0,i.Z)((0,i.Z)({},R),{},(0,r.Z)({},e,n.target.value)))},placeholder:n.placeholder,disabled:!H,type:n.type},e)}(n[0],n[1])})),(0,Z.jsxs)(c.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[H&&(0,Z.jsx)(c.zxk,{id:"clear",type:"button",variant:"secondary",onClick:function(){return V(!0)},label:"Reset Configuration"}),H&&(0,Z.jsx)(c.zxk,{id:"cancel",type:"button",variant:"regular",onClick:ne,label:"Cancel"}),H&&(0,Z.jsx)(c.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:j||!function(){for(var e=0,t=Object.entries(n);e0?(0,h.jsxs)(o.Fragment,{children:[(0,h.jsx)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){P(e)},value:D,label:t?"":"Assign Policies"})}),(0,h.jsx)(a.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,o=(0,r.Z)(_);i?o.push(t):o=o.filter((function(e){return e!==t})),o=o.filter((function(e){return""!==e})),m((0,f.ue)(o))},selectedItems:_,isLoading:k,records:I,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(a.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},21639:function(e,n,t){"use strict";t.d(n,{KE:function(){return s},LQ:function(){return r},V2:function(){return o},g4:function(){return i}});var r=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n
{title}
\n {subTitle}\n
\n
\n\n
{actions}
\n \n \n );\n};\n\nexport default ScreenTitle;\n","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","import PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { LinearProgress } from \"@mui/material\";\nimport { ConfirmDeleteIcon } 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 {!!results.groups && (\n \n )}\n {!!results.users && (\n \n )}\n {!!results.policies && (\n \n )}\n \n ) : (\n No query results yet\n )}\n \n )}\n \n \n \n \n }\n >\n Search\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 EditIcon,\n FormLayout,\n Grid,\n InputBox,\n Loader,\n PageLayout,\n RefreshIcon,\n Switch,\n Tabs,\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 ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\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 \"lookup_bind_password\",\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 [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\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 if (record && record.length > 0) {\n const enabled = record.find((item: any) => item.key === \"enable\");\n\n let totalCoincidences = 0;\n\n record.forEach((item: any) => {\n fields[item.key] = item.value;\n\n if (\n enabledConfigLDAP.includes(item.key) &&\n item.value &&\n item.value !== \"\" &&\n item.value !== \"off\"\n ) {\n totalCoincidences++;\n }\n });\n\n const hasConfig = totalCoincidences === enabledConfigLDAP.length;\n\n if ((!enabled || enabled.value === \"on\") && hasConfig) {\n setIsEnabled(true);\n } else {\n setIsEnabled(false);\n }\n\n setHasConfiguration(hasConfig);\n }\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\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 onClick={toggleEditMode}\n label={\"Edit Configuration\"}\n disabled={loading}\n />\n {hasConfiguration && (\n toggleConfiguration(!isEnabled)}\n label={isEnabled ? \"Disable LDAP\" : \"Enable LDAP\"}\n variant={isEnabled ? \"secondary\" : \"regular\"}\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 {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && (\n setResetOpen(true)}\n label={\"Reset Configuration\"}\n />\n )}\n {editMode && (\n \n )}\n {editMode && (\n \n )}\n \n \n \n ) : (\n \n \n \n {hasConfiguration && (\n \n {Object.entries(formFields).map(\n ([key, value]) => (\n \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 LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } 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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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 },\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: \"(sAMAcountName=%s)\",\n type: \"text\",\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 },\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 },\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { DataTable, Grid, Box } 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\";\nimport {\n Error,\n HttpResponse,\n ListPoliciesResponse,\n} from \"../../../api/consoleApi\";\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: HttpResponse) => {\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["useStyles","makeStyles","theme","headerBarIcon","marginRight","color","palette","primary","main","width","height","display","headerBarSubheader","maxWidth","stContainer","alignItems","justifyContent","padding","borderBottom","flexFlow","titleColumn","fontSize","leftItems","rightItems","marginLeft","_ref","icon","title","subTitle","actions","className","classes","_jsx","Grid","container","children","_jsxs","item","xs","concat","style","margin","createStyled","_excluded","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","name","slot","overridesResolver","props","styles","root","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","React","toArray","filter","Boolean","reduce","output","child","index","push","length","key","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","direction","breakpoints","propValue","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","deepmerge","useFlexGap","gap","getValue","_defineProperty","row","column","mergeBreakpointsInOrder","Stack","options","arguments","undefined","_options$createStyled","createStyledComponent","_options$useThemeProp","useThemeProps","_options$componentNam","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","_props$component","component","_props$direction","_props$spacing","divider","_props$useFlexGap","other","_objectWithoutPropertiesLoose","composeClasses","generateUtilityClass","as","clsx","createStack","styled","_ref$label","label","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","_objectSpread","sm","fontWeight","configurationName","closeResetModalAndRefresh","resetOpen","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","resetLoading","setResetLoading","useEffect","api","configs","resetConfig","then","catch","err","setErrorSnackMessage","errorToHandler","error","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmationContent","Fragment","LinearProgress","whiteSpace","wordWrap","FeatureItem","description","Box","sx","marginBottom","fontStyle","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","paddingBottom","HelpIconFilled","map","content","iconDescription","text","href","target","rel","EntityResultTitle","CollapseCaret","transform","EntityResultItems","blockName","results","res","_ref3","_results$groups","_results$policies","_results$users","_results$groups2","_results$users2","_results$policies2","entityName","entityLength","groups","policies","users","marginTop","SectionTitle","GroupsMenuIcon","h4","fill","groupData","group","user","policy","loading","setLoading","_useState3","_useState4","setUsers","_useState5","_useState6","setGroups","_useState7","_useState8","setResults","selectedPolicies","useSelector","state","createUser","paddingTop","md","lg","withBorders","overflowY","minHeight","maxHeight","userDat","InputBox","id","onChange","e","usersElements","_toConsumableArray","overlayIcon","AddIcon","RemoveIcon","overlayAction","addItem","alterUsers","filteredUsers","_","indx","alterUsersList","groupDat","groupsElements","alterGroups","filteredGroups","alterGroupsList","PolicySelectors","selectedPolicy","noTitle","textAlign","Loader","timestamp","TimeIcon","DateTime","fromISO","toFormat","backgroundColor","flexGrow","LDAPResultsBlock","Button","type","variant","onClick","data","cleanPolicies","pol","cleanUsers","usr","cleanGroups","grp","ldapEntities","getLdapEntities","result","SearchIcon","enabledConfigLDAP","formFields","ldapFormFields","isEnabled","setIsEnabled","hasConfiguration","setHasConfiguration","fields","setFields","_useState9","_useState10","record","setRecord","_useState11","_useState12","editMode","setEditMode","_useState13","_useState14","setResetOpen","_useState15","_useState16","curTab","setCurTab","toggleEditMode","parseFields","enabled","find","totalCoincidences","includes","hasConfig","configInfo","key_values","closeDeleteModalAndRefresh","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","setServerNeedsRestart","stop","_x","apply","setHelpName","ResetConfigurationModal","PageHeaderWrapper","HelpMenu","PageLayout","Tabs","horizontal","tabConfig","ScreenTitle","EditIcon","disabled","payload","setConfig","restart","setSnackBarMessage","toggleConfiguration","RefreshIcon","FormLayout","helpBox","AddIDPConfigurationHelpBox","ldapHelpBoxContents","entries","Switch","indicatorLabels","checked","tooltip","required","hasError","placeholder","renderFormField","_i","_Object$entries","_Object$entries$_i","validSave","keyVals","gridTemplateColumns","gridAutoFlow","LabelValuePair","_ref5","_ref6","LDAPEntitiesQuery","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","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_ref$noTitle","records","setRecords","setFilter","currentPolicies","fetchPolicies","useCallback","listPolicies","_res$data$policies","sort","policySort","setModalErrorSnackMessage","filteredRecords","elementItem","SearchBox","DataTable","columns","elementKey","onSelect","targetD","elements","element","setSelectedPolicies","selectedItems","idField","customPaperHeight","usersSort","a","b","accessKey","stringSort","policyDetailsSort","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","indexOf","muiName","_len","funcs","Array","_key","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.8a627131.chunk.js b/portal-ui/build/static/js/1705.8a627131.chunk.js
deleted file mode 100644
index 777685d70..000000000
--- a/portal-ui/build/static/js/1705.8a627131.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1705],{71705:function(n,e,t){"use strict";t.r(e);var u=t(29439),r=t(72791),o=t(9505),c=t(64554),i=t(56087),l=t(38442),s=t(26181),a=t.n(s),f=t(81918),d=t(29823),p=t(42419),v=t(75578),Z=t(29945),h=t(87995),x=t(81551),_=t(80184),T=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(5994),t.e(5473),t.e(7391),t.e(247)]).then(t.bind(t,40247))}))),b=(0,v.Z)(r.lazy((function(){return t.e(2763).then(t.bind(t,22763))})));e.default=function(n){var e=n.bucketName,t=(0,x.TL)(),s=(0,r.useState)(null),v=(0,u.Z)(s,2),m=v[0],j=v[1],C=(0,r.useState)(!1),g=(0,u.Z)(C,2),S=g[0],k=g[1],y=(0,r.useState)([]),G=(0,u.Z)(y,2),I=G[0],P=G[1],A=(0,r.useState)(["",""]),E=(0,u.Z)(A,2),F=E[0],N=E[1],U=(0,r.useState)(!1),w=(0,u.Z)(U,2),O=w[0],z=w[1],M=(0,o.Z)((function(n){var e,t;null!=n&&null!=(null===n||void 0===n?void 0:n.details)&&"tags"in(null===n||void 0===n?void 0:n.details)&&(j(null===n||void 0===n||null===(e=n.details)||void 0===e?void 0:e.tags),P(Object.keys(null===n||void 0===n||null===(t=n.details)||void 0===t?void 0:t.tags)))}),(function(n){t((0,h.Ih)(n))})),B=(0,u.Z)(M,2),D=B[0],K=B[1],R=function(){K("GET","/api/v1/buckets/".concat(e))};return(0,r.useEffect)((function(){R()}),[e]),(0,_.jsxs)(c.Z,{children:[D?(0,_.jsx)(Z.aNw,{style:{width:16,height:16}}):null,(0,_.jsx)(l.s,{scopes:[i.Ft.S3_GET_BUCKET_TAGGING,i.Ft.S3_GET_ACTIONS],resource:e,children:(0,_.jsxs)(c.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,_.jsx)(c.Z,{children:I&&I.map((function(n,t){var u=a()(m,"".concat(n),"");return""!==u?(0,_.jsx)(l.s,{scopes:[i.Ft.S3_PUT_BUCKET_TAGGING,i.Ft.S3_PUT_ACTIONS],resource:e,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,_.jsx)(f.Z,{style:{textTransform:"none",marginRight:"5px"},size:"small",label:"".concat(n," : ").concat(u),color:"primary",deleteIcon:(0,_.jsx)(d.Z,{}),onDelete:function(){!function(n,e){N([n,e]),z(!0)}(n,u)}})},"chip-".concat(t)):null}))}),(0,_.jsx)(l.s,{scopes:[i.Ft.S3_PUT_BUCKET_TAGGING,i.Ft.S3_PUT_ACTIONS],resource:e,errorProps:{disabled:!0,onClick:null},children:(0,_.jsx)(f.Z,{style:{maxWidth:80,marginTop:"10px"},icon:(0,_.jsx)(p.Z,{}),clickable:!0,size:"small",label:"Add tag",color:"primary",variant:"outlined",onClick:function(){k(!0)}})})]})}),S&&(0,_.jsx)(T,{modalOpen:S,currentTags:m,bucketName:e,onCloseAndUpdate:function(n){k(!1),n&&R()}}),O&&(0,_.jsx)(b,{deleteOpen:O,currentTags:m,bucketName:e,onCloseAndUpdate:function(n){z(!1),n&&R()},selectedTag:F})]})}},42419:function(n,e,t){"use strict";var u=t(64836);e.Z=void 0;var r=u(t(45649)),o=t(80184),c=(0,r.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");e.Z=c},29823:function(n,e,t){"use strict";var u=t(64836);e.Z=void 0;var r=u(t(45649)),o=t(80184),c=(0,r.default)((0,o.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");e.Z=c},45649:function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return u.createSvgIcon}});var u=t(28610)},31260:function(n,e,t){"use strict";var u=t(78949);e.Z=u.Z},28610:function(n,e,t){"use strict";t.r(e),t.d(e,{capitalize:function(){return r.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return c.Z},debounce:function(){return i.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return s.Z},ownerDocument:function(){return a.Z},ownerWindow:function(){return f.Z},requirePropFactory:function(){return d},setRef:function(){return p},unstable_ClassNameGenerator:function(){return m},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return Z.Z},unsupportedProp:function(){return h},useControlled:function(){return x.Z},useEventCallback:function(){return _.Z},useForkRef:function(){return T.Z},useIsFocusVisible:function(){return b.Z}});var u=t(55902),r=t(14036),o=t(31260),c=t(76189),i=t(83199);var l=function(n,e){return function(){return null}},s=t(19103),a=t(98301),f=t(17602);t(87462);var d=function(n,e){return function(){return null}},p=t(62971).Z,v=t(40162),Z=t(67384);var h=function(n,e,t,u,r){return null},x=t(98278),_=t(89683),T=t(42071),b=t(23031),m={configure:function(n){u.Z.configure(n)}}},64836:function(n){n.exports=function(n){return n&&n.__esModule?n:{default:n}},n.exports.__esModule=!0,n.exports.default=n.exports}}]);
-//# sourceMappingURL=1705.8a627131.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.8a627131.chunk.js.map b/portal-ui/build/static/js/1705.8a627131.chunk.js.map
deleted file mode 100644
index c45b530b6..000000000
--- a/portal-ui/build/static/js/1705.8a627131.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1705.8a627131.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/Close.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { Bucket } from \"../../../Watch/types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport useApi from \"../../../Common/Hooks/useApi\";\nimport { Box } from \"@mui/material\";\nimport { IAM_SCOPES } from \"../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\nimport get from \"lodash/get\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport withSuspense from \"../../../Common/Components/withSuspense\";\nimport { Loader } from \"mds\";\n\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst AddBucketTagModal = withSuspense(\n React.lazy(() => import(\"../AddBucketTagModal\")),\n);\nconst DeleteBucketTagModal = withSuspense(\n React.lazy(() => import(\"../DeleteBucketTagModal\")),\n);\n\ntype BucketTagProps = {\n bucketName: string;\n};\n\nconst BucketTags = ({ bucketName }: BucketTagProps) => {\n const dispatch = useAppDispatch();\n\n const [tags, setTags] = useState(null);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [tagKeys, setTagKeys] = useState([]);\n const [selectedTag, setSelectedTag] = useState([\"\", \"\"]);\n const [deleteTagModalOpen, setDeleteTagModalOpen] = useState(false);\n\n const closeAddTagModal = (refresh: boolean) => {\n setTagModalOpen(false);\n if (refresh) {\n fetchTags();\n }\n };\n\n const deleteTag = (tagKey: string, tagLabel: string) => {\n setSelectedTag([tagKey, tagLabel]);\n setDeleteTagModalOpen(true);\n };\n\n const closeDeleteTagModal = (refresh: boolean) => {\n setDeleteTagModalOpen(false);\n\n if (refresh) {\n fetchTags();\n }\n };\n\n const onTagLoaded = (res: Bucket) => {\n if (res != null && res?.details != null && \"tags\" in res?.details) {\n setTags(res?.details?.tags);\n setTagKeys(Object.keys(res?.details?.tags));\n }\n };\n\n const onTagLoadFailed = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [isLoading, invokeTagsApi] = useApi(onTagLoaded, onTagLoadFailed);\n\n const fetchTags = () => {\n invokeTagsApi(\"GET\", `/api/v1/buckets/${bucketName}`);\n };\n\n useEffect(() => {\n fetchTags();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName]);\n\n return (\n \n {isLoading ? : null}\n \n \n \n {tagKeys &&\n tagKeys.map((tagKey: any, index: any) => {\n const tag = get(tags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n deleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n\n \n }\n clickable\n size=\"small\"\n label=\"Add tag\"\n color=\"primary\"\n variant=\"outlined\"\n onClick={() => {\n setTagModalOpen(true);\n }}\n />\n \n \n \n\n {/** Modals **/}\n\n {tagModalOpen && (\n \n )}\n {deleteTagModalOpen && (\n \n )}\n \n );\n};\n\nexport default BucketTags;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","_ref","bucketName","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","tags","setTags","_useState3","_useState4","tagModalOpen","setTagModalOpen","_useState5","_useState6","tagKeys","setTagKeys","_useState7","_useState8","selectedTag","setSelectedTag","_useState9","_useState10","deleteTagModalOpen","setDeleteTagModalOpen","_useApi","useApi","res","_res$details","_res$details2","details","Object","keys","err","setErrorSnackMessage","_useApi2","isLoading","invokeTagsApi","fetchTags","concat","useEffect","_jsxs","Box","children","_jsx","Loader","style","width","height","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_TAGGING","S3_GET_ACTIONS","resource","sx","display","flexFlow","map","tagKey","index","tag","get","S3_PUT_BUCKET_TAGGING","S3_PUT_ACTIONS","matchAll","errorProps","deleteIcon","onDelete","Chip","textTransform","marginRight","size","label","color","CloseIcon","tagLabel","deleteTag","disabled","onClick","maxWidth","marginTop","icon","AddIcon","clickable","variant","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","value","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.a54c5659.chunk.js b/portal-ui/build/static/js/1705.a54c5659.chunk.js
new file mode 100644
index 000000000..83a63708c
--- /dev/null
+++ b/portal-ui/build/static/js/1705.a54c5659.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1705],{71705:function(e,n,t){t.r(n);var l=t(29439),s=t(72791),c=t(26181),a=t.n(c),o=t(29945),u=t(56087),i=t(38442),r=t(87995),d=t(81551),p=t(9505),f=t(75578),x=t(80184),T=(0,f.Z)(s.lazy((function(){return Promise.all([t.e(5473),t.e(1715),t.e(5994),t.e(7391),t.e(247)]).then(t.bind(t,40247))}))),h=(0,f.Z)(s.lazy((function(){return t.e(2763).then(t.bind(t,22763))})));n.default=function(e){var n=e.bucketName,t=(0,d.TL)(),c=(0,s.useState)(null),f=(0,l.Z)(c,2),v=f[0],_=f[1],S=(0,s.useState)(!1),j=(0,l.Z)(S,2),b=j[0],g=j[1],C=(0,s.useState)([]),G=(0,l.Z)(C,2),k=G[0],m=G[1],A=(0,s.useState)(["",""]),N=(0,l.Z)(A,2),U=N[0],Z=N[1],I=(0,s.useState)(!1),P=(0,l.Z)(I,2),E=P[0],F=P[1],w=(0,p.Z)((function(e){if(e&&null!=(null===e||void 0===e?void 0:e.details)){var n,t;if(e.details.tags)return _(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.tags),void m(Object.keys(null===e||void 0===e||null===(t=e.details)||void 0===t?void 0:t.tags));_([]),m([])}}),(function(e){t((0,r.Ih)(e))})),y=(0,l.Z)(w,2),O=y[0],B=y[1],K=function(){B("GET","/api/v1/buckets/".concat(n))};return(0,s.useEffect)((function(){K()}),[n]),(0,x.jsxs)(o.xuv,{children:[O?(0,x.jsx)(o.aNw,{style:{width:16,height:16}}):null,(0,x.jsx)(i.s,{scopes:[u.Ft.S3_GET_BUCKET_TAGGING,u.Ft.S3_GET_ACTIONS],resource:n,children:(0,x.jsx)(o.xuv,{sx:{display:"flex",flexFlow:"column",marginTop:5},children:(0,x.jsxs)(o.xuv,{sx:{display:"flex",gap:8,flexWrap:"wrap"},children:[k&&k.map((function(e,t){var l=a()(v,"".concat(e),"");return""!==l?(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,x.jsx)(o.Vp9,{label:"".concat(e," : ").concat(l),id:"tag-".concat(e,"-").concat(l),onDelete:function(){!function(e,n){Z([e,n]),F(!0)}(e,l)}})},"chip-".concat(t)):null})),(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,errorProps:{disabled:!0,onClick:null},children:(0,x.jsx)(o.Vp9,{label:"Add tag",icon:(0,x.jsx)(o.dtP,{}),id:"create-tag",variant:"outlined",onClick:function(){g(!0)},sx:{cursor:"pointer",maxWidth:90}})})]})})}),b&&(0,x.jsx)(T,{modalOpen:b,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){g(!1),e&&K()}}),E&&(0,x.jsx)(h,{deleteOpen:E,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){F(!1),e&&K()},selectedTag:U})]})}}}]);
+//# sourceMappingURL=1705.a54c5659.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.a54c5659.chunk.js.map b/portal-ui/build/static/js/1705.a54c5659.chunk.js.map
new file mode 100644
index 000000000..15dcd9326
--- /dev/null
+++ b/portal-ui/build/static/js/1705.a54c5659.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1705.a54c5659.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, Loader, Tag } from \"mds\";\nimport { Bucket } from \"../../../Watch/types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IAM_SCOPES } from \"../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\nimport useApi from \"../../../Common/Hooks/useApi\";\nimport withSuspense from \"../../../Common/Components/withSuspense\";\n\nconst AddBucketTagModal = withSuspense(\n React.lazy(() => import(\"../AddBucketTagModal\")),\n);\nconst DeleteBucketTagModal = withSuspense(\n React.lazy(() => import(\"../DeleteBucketTagModal\")),\n);\n\ntype BucketTagProps = {\n bucketName: string;\n};\n\nconst BucketTags = ({ bucketName }: BucketTagProps) => {\n const dispatch = useAppDispatch();\n\n const [tags, setTags] = useState(null);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [tagKeys, setTagKeys] = useState([]);\n const [selectedTag, setSelectedTag] = useState([\"\", \"\"]);\n const [deleteTagModalOpen, setDeleteTagModalOpen] = useState(false);\n\n const closeAddTagModal = (refresh: boolean) => {\n setTagModalOpen(false);\n if (refresh) {\n fetchTags();\n }\n };\n\n const deleteTag = (tagKey: string, tagLabel: string) => {\n setSelectedTag([tagKey, tagLabel]);\n setDeleteTagModalOpen(true);\n };\n\n const closeDeleteTagModal = (refresh: boolean) => {\n setDeleteTagModalOpen(false);\n\n if (refresh) {\n fetchTags();\n }\n };\n\n const onTagLoaded = (res: Bucket) => {\n if (!!res && res?.details != null) {\n if (res.details.tags) {\n setTags(res?.details?.tags);\n setTagKeys(Object.keys(res?.details?.tags));\n\n return;\n }\n setTags([]);\n setTagKeys([]);\n }\n };\n\n const onTagLoadFailed = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [isLoading, invokeTagsApi] = useApi(onTagLoaded, onTagLoadFailed);\n\n const fetchTags = () => {\n invokeTagsApi(\"GET\", `/api/v1/buckets/${bucketName}`);\n };\n\n useEffect(() => {\n fetchTags();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName]);\n\n return (\n \n {isLoading ? : null}\n \n \n \n {tagKeys &&\n tagKeys.map((tagKey: any, index: any) => {\n const tag = get(tags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n {\n deleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n }\n id={\"create-tag\"}\n variant={\"outlined\"}\n onClick={() => {\n setTagModalOpen(true);\n }}\n sx={{ cursor: \"pointer\", maxWidth: 90 }}\n />\n \n \n \n \n\n {/** Modals **/}\n\n {tagModalOpen && (\n \n )}\n {deleteTagModalOpen && (\n \n )}\n \n );\n};\n\nexport default BucketTags;\n"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","_ref","bucketName","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","tags","setTags","_useState3","_useState4","tagModalOpen","setTagModalOpen","_useState5","_useState6","tagKeys","setTagKeys","_useState7","_useState8","selectedTag","setSelectedTag","_useState9","_useState10","deleteTagModalOpen","setDeleteTagModalOpen","_useApi","useApi","res","details","_res$details","_res$details2","Object","keys","err","setErrorSnackMessage","_useApi2","isLoading","invokeTagsApi","fetchTags","concat","useEffect","_jsxs","Box","children","_jsx","Loader","style","width","height","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_TAGGING","S3_GET_ACTIONS","resource","sx","display","flexFlow","marginTop","gap","flexWrap","map","tagKey","index","tag","get","S3_PUT_BUCKET_TAGGING","S3_PUT_ACTIONS","matchAll","errorProps","deleteIcon","onDelete","Tag","label","id","tagLabel","deleteTag","disabled","onClick","icon","AddIcon","variant","cursor","maxWidth","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1715.b85c256f.chunk.js b/portal-ui/build/static/js/1715.b85c256f.chunk.js
new file mode 100644
index 000000000..60d8a0b7d
--- /dev/null
+++ b/portal-ui/build/static/js/1715.b85c256f.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1715],{90493:function(e,n,t){t.d(n,{Z:function(){return g}});var r=t(63366),i=t(87462),o=t(72791),s=t(28182),a=t(94419),u=t(66934),l=t(31402),d=t(66199),c=t(75878),p=t(21217);function v(e){return(0,p.Z)("MuiList",e)}(0,c.Z)("MuiList",["root","padding","dense","subheader"]);var f=t(80184),h=["children","className","component","dense","disablePadding","subheader"],m=(0,u.ZP)("ul",{name:"MuiList",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,!t.disablePadding&&n.padding,t.dense&&n.dense,t.subheader&&n.subheader]}})((function(e){var n=e.ownerState;return(0,i.Z)({listStyle:"none",margin:0,padding:0,position:"relative"},!n.disablePadding&&{paddingTop:8,paddingBottom:8},n.subheader&&{paddingTop:0})})),g=o.forwardRef((function(e,n){var t=(0,l.Z)({props:e,name:"MuiList"}),u=t.children,c=t.className,p=t.component,g=void 0===p?"ul":p,b=t.dense,Z=void 0!==b&&b,P=t.disablePadding,M=void 0!==P&&P,y=t.subheader,w=(0,r.Z)(t,h),C=o.useMemo((function(){return{dense:Z}}),[Z]),F=(0,i.Z)({},t,{component:g,dense:Z,disablePadding:M}),x=function(e){var n=e.classes,t={root:["root",!e.disablePadding&&"padding",e.dense&&"dense",e.subheader&&"subheader"]};return(0,a.Z)(t,v,n)}(F);return(0,f.jsx)(d.Z.Provider,{value:C,children:(0,f.jsxs)(m,(0,i.Z)({as:g,className:(0,s.Z)(x.root,c),ref:n,ownerState:F},w,{children:[y,u]}))})}))},71715:function(e,n,t){t.d(n,{Z:function(){return T}});var r=t(87462),i=t(63366),o=t(72791),s=(t(57441),t(28182)),a=t(94419),u=t(98301),l=t(90493),d=t(57137).Z,c=t(42071),p=t(40162),v=t(80184),f=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function h(e,n,t){return e===n?e.firstChild:n&&n.nextElementSibling?n.nextElementSibling:t?null:e.firstChild}function m(e,n,t){return e===n?t?e.firstChild:e.lastChild:n&&n.previousElementSibling?n.previousElementSibling:t?null:e.lastChild}function g(e,n){if(void 0===n)return!0;var t=e.innerText;return void 0===t&&(t=e.textContent),0!==(t=t.trim().toLowerCase()).length&&(n.repeating?t[0]===n.keys[0]:0===t.indexOf(n.keys.join("")))}function b(e,n,t,r,i,o){for(var s=!1,a=i(e,n,!!n&&t);a;){if(a===e.firstChild){if(s)return!1;s=!0}var u=!r&&(a.disabled||"true"===a.getAttribute("aria-disabled"));if(a.hasAttribute("tabindex")&&g(a,o)&&!u)return a.focus(),!0;a=i(e,a,t)}return!1}var Z=o.forwardRef((function(e,n){var t=e.actions,s=e.autoFocus,a=void 0!==s&&s,Z=e.autoFocusItem,P=void 0!==Z&&Z,M=e.children,y=e.className,w=e.disabledItemsFocusable,C=void 0!==w&&w,F=e.disableListWrap,x=void 0!==F&&F,S=e.onKeyDown,k=e.variant,D=void 0===k?"selectedMenu":k,L=(0,i.Z)(e,f),E=o.useRef(null),R=o.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,p.Z)((function(){a&&E.current.focus()}),[a]),o.useImperativeHandle(t,(function(){return{adjustStyleForScrollbar:function(e,n){var t=!E.current.style.width;if(e.clientHeight=M.length&&(T=-1)):T===n&&(T+=1)>=M.length&&(T=-1)}));var K=o.Children.map(M,(function(e,n){if(n===T){var t={};return P&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===D&&(t.tabIndex=0),o.cloneElement(e,t)}return e}));return(0,v.jsx)(l.Z,(0,r.Z)({role:"menu",ref:I,className:y,onKeyDown:function(e){var n=E.current,t=e.key,r=(0,u.Z)(n).activeElement;if("ArrowDown"===t)e.preventDefault(),b(n,r,x,C,h);else if("ArrowUp"===t)e.preventDefault(),b(n,r,x,C,m);else if("Home"===t)e.preventDefault(),b(n,null,x,C,h);else if("End"===t)e.preventDefault(),b(n,null,x,C,m);else if(1===t.length){var i=R.current,o=t.toLowerCase(),s=performance.now();i.keys.length>0&&(s-i.lastTime>500?(i.keys=[],i.repeating=!0,i.previousKeyMatched=!0):i.repeating&&o!==i.keys[0]&&(i.repeating=!1)),i.lastTime=s,i.keys.push(o);var a=r&&!i.repeating&&g(r,i);i.previousKeyMatched&&(a||b(n,r,!1,C,h,i))?e.preventDefault():i.previousKeyMatched=!1}S&&S(e)},tabIndex:a?0:-1},L,{children:K}))})),P=t(15473),M=t(66934),y=t(13967),w=t(31402),C=t(75878),F=t(21217);function x(e){return(0,F.Z)("MuiMenu",e)}(0,C.Z)("MuiMenu",["root","paper","list"]);var S=["onEntering"],k=["autoFocus","children","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant"],D={vertical:"top",horizontal:"right"},L={vertical:"top",horizontal:"left"},E=(0,M.ZP)(P.ZP,{shouldForwardProp:function(e){return(0,M.FO)(e)||"classes"===e},name:"MuiMenu",slot:"Root",overridesResolver:function(e,n){return n.root}})({}),R=(0,M.ZP)(P.XS,{name:"MuiMenu",slot:"Paper",overridesResolver:function(e,n){return n.paper}})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),I=(0,M.ZP)(Z,{name:"MuiMenu",slot:"List",overridesResolver:function(e,n){return n.list}})({outline:0}),T=o.forwardRef((function(e,n){var t=(0,w.Z)({props:e,name:"MuiMenu"}),u=t.autoFocus,l=void 0===u||u,d=t.children,c=t.disableAutoFocusItem,p=void 0!==c&&c,f=t.MenuListProps,h=void 0===f?{}:f,m=t.onClose,g=t.open,b=t.PaperProps,Z=void 0===b?{}:b,P=t.PopoverClasses,M=t.transitionDuration,C=void 0===M?"auto":M,F=t.TransitionProps,T=(void 0===F?{}:F).onEntering,K=t.variant,N=void 0===K?"selectedMenu":K,j=(0,i.Z)(t.TransitionProps,S),A=(0,i.Z)(t,k),H=(0,y.Z)(),O="rtl"===H.direction,z=(0,r.Z)({},t,{autoFocus:l,disableAutoFocusItem:p,MenuListProps:h,onEntering:T,PaperProps:Z,transitionDuration:C,TransitionProps:j,variant:N}),W=function(e){var n=e.classes;return(0,a.Z)({root:["root"],paper:["paper"],list:["list"]},x,n)}(z),V=l&&!p&&g,_=o.useRef(null),B=-1;return o.Children.map(d,(function(e,n){o.isValidElement(e)&&(e.props.disabled||("selectedMenu"===N&&e.props.selected||-1===B)&&(B=n))})),(0,v.jsx)(E,(0,r.Z)({onClose:m,anchorOrigin:{vertical:"bottom",horizontal:O?"right":"left"},transformOrigin:O?D:L,slots:{paper:R},slotProps:{paper:(0,r.Z)({},Z,{classes:(0,r.Z)({},Z.classes,{root:W.paper})})},className:W.root,open:g,ref:n,transitionDuration:C,TransitionProps:(0,r.Z)({onEntering:function(e,n){_.current&&_.current.adjustStyleForScrollbar(e,H),T&&T(e,n)}},j),ownerState:z},A,{classes:P,children:(0,v.jsx)(I,(0,r.Z)({onKeyDown:function(e){"Tab"===e.key&&(e.preventDefault(),m&&m(e,"tabKeyDown"))},actions:_,autoFocus:l&&(-1===B||p),autoFocusItem:V,variant:N},h,{className:(0,s.Z)(W.list,h.className),children:d}))}))}))}}]);
+//# sourceMappingURL=1715.b85c256f.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1715.b85c256f.chunk.js.map b/portal-ui/build/static/js/1715.b85c256f.chunk.js.map
new file mode 100644
index 000000000..87f492e82
--- /dev/null
+++ b/portal-ui/build/static/js/1715.b85c256f.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1715.b85c256f.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n}, !ownerState.disablePadding && {\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.subheader && {\n paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = _extends({}, props, {\n component,\n dense,\n disablePadding\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [subheader, children]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","import { unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\nexport default getScrollbarSize;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, theme) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n if (activeItemIndex === index) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other, {\n children: items\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n _excluded2 = [\"autoFocus\", \"children\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { HTMLElementType } from '@mui/utils';\nimport MenuList from '../MenuList';\nimport Popover, { PopoverPaper } from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n vertical: 'top',\n horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n vertical: 'top',\n horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper'],\n list: ['list']\n };\n return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenu',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nexport const MenuPaper = styled(PopoverPaper, {\n name: 'MuiMenu',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})({\n // specZ: The maximum height of a simple menu should be one or more rows less than the view\n // height. This ensures a tappable area outside of the simple menu with which to dismiss\n // the menu.\n maxHeight: 'calc(100% - 96px)',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n name: 'MuiMenu',\n slot: 'List',\n overridesResolver: (props, styles) => styles.list\n})({\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenu'\n });\n const {\n autoFocus = true,\n children,\n disableAutoFocusItem = false,\n MenuListProps = {},\n onClose,\n open,\n PaperProps = {},\n PopoverClasses,\n transitionDuration = 'auto',\n TransitionProps: {\n onEntering\n } = {},\n variant = 'selectedMenu'\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const ownerState = _extends({}, props, {\n autoFocus,\n disableAutoFocusItem,\n MenuListProps,\n onEntering,\n PaperProps,\n transitionDuration,\n TransitionProps,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n const menuListActionsRef = React.useRef(null);\n const handleEntering = (element, isAppearing) => {\n if (menuListActionsRef.current) {\n menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n }\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n };\n const handleListKeyDown = event => {\n if (event.key === 'Tab') {\n event.preventDefault();\n if (onClose) {\n onClose(event, 'tabKeyDown');\n }\n }\n };\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.map(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n return /*#__PURE__*/_jsx(MenuRoot, _extends({\n onClose: onClose,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: isRtl ? 'right' : 'left'\n },\n transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n slots: {\n paper: MenuPaper\n },\n slotProps: {\n paper: _extends({}, PaperProps, {\n classes: _extends({}, PaperProps.classes, {\n root: classes.paper\n })\n })\n },\n className: classes.root,\n open: open,\n ref: ref,\n transitionDuration: transitionDuration,\n TransitionProps: _extends({\n onEntering: handleEntering\n }, TransitionProps),\n ownerState: ownerState\n }, other, {\n classes: PopoverClasses,\n children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n onKeyDown: handleListKeyDown,\n actions: menuListActionsRef,\n autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n autoFocusItem: autoFocusItem,\n variant: variant\n }, MenuListProps, {\n className: clsx(classes.list, MenuListProps.className),\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the position of the menu.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n * children are not focusable. If you set this prop to `false` focus will be placed\n * on the parent modal container. This has severe accessibility implications\n * and should only be considered if you manage focus otherwise.\n * @default true\n */\n autoFocus: PropTypes.bool,\n /**\n * Menu contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n * unless `autoFocus` is also set to `false`. Not using the default means not\n * following WAI-ARIA authoring practices. Please be considerate about possible\n * accessibility implications.\n * @default false\n */\n disableAutoFocusItem: PropTypes.bool,\n /**\n * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n * @default {}\n */\n MenuListProps: PropTypes.object,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n PaperProps: PropTypes.object,\n /**\n * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n */\n PopoverClasses: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The length of the transition in `ms`, or 'auto'\n * @default 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;"],"names":["getListUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","ListRoot","styled","name","overridesResolver","props","styles","ownerState","root","disablePadding","padding","dense","subheader","_ref","_extends","listStyle","margin","position","paddingTop","paddingBottom","React","inProps","ref","useThemeProps","children","className","_props$component","component","_props$dense","_props$disablePadding","other","_objectWithoutPropertiesLoose","context","classes","slots","composeClasses","useUtilityClasses","_jsx","ListContext","Provider","value","_jsxs","as","clsx","nextItem","list","item","disableListWrap","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","undefined","text","innerText","textContent","trim","toLowerCase","length","repeating","keys","indexOf","join","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","disabled","getAttribute","hasAttribute","focus","actions","_props$autoFocus","autoFocus","_props$autoFocusItem","autoFocusItem","_props$disabledItemsF","_props$disableListWra","onKeyDown","_props$variant","variant","listRef","textCriteriaRef","previousKeyMatched","lastTime","useEnhancedEffect","current","adjustStyleForScrollbar","containerElement","theme","noExplicitWidth","style","width","clientHeight","scrollbarSize","concat","getScrollbarSize","ownerDocument","direction","handleRef","useForkRef","activeItemIndex","forEach","child","index","selected","muiSkipListHighlight","type","items","map","newChildProps","tabIndex","List","role","event","key","activeElement","preventDefault","criteria","lowerKey","currTime","performance","now","push","keepFocusOnCurrent","getMenuUtilityClass","_excluded2","RTL_ORIGIN","vertical","horizontal","LTR_ORIGIN","MenuRoot","Popover","shouldForwardProp","prop","rootShouldForwardProp","MenuPaper","PopoverPaper","paper","maxHeight","WebkitOverflowScrolling","MenuMenuList","MenuList","outline","_props$disableAutoFoc","disableAutoFocusItem","_props$MenuListProps","MenuListProps","onClose","open","_props$PaperProps","PaperProps","PopoverClasses","_props$transitionDura","transitionDuration","_props$TransitionProp","TransitionProps","onEntering","useTheme","isRtl","menuListActionsRef","anchorOrigin","transformOrigin","slotProps","element","isAppearing"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2074.307a0b66.chunk.js b/portal-ui/build/static/js/2074.307a0b66.chunk.js
deleted file mode 100644
index 0c5c22c38..000000000
--- a/portal-ui/build/static/js/2074.307a0b66.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2074,8896,9134],{88896:function(e,n,t){t.r(n);var s=t(37762),i=t(29439),r=t(72791),o=t(29945),l=t(45248),c=t(87995),a=t(81551),u=t(23508),d=t(9505),f=t(80184);n.default=function(e){var n=e.selectedGroups,t=e.deleteOpen,x=e.closeDeleteModalAndRefresh,h=(0,a.TL)(),p=(0,d.Z)((function(){return x(!0)}),(function(e){h((0,c.Ih)(e)),x(!1)})),m=(0,i.Z)(p,2),j=m[0],v=m[1];if(!n)return null;var g=n.map((function(e){return(0,f.jsx)("div",{children:(0,f.jsx)("b",{children:e})},e)}));return(0,f.jsx)(u.Z,{title:"Delete Group".concat(n.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(o.NvT,{}),isLoading:j,onConfirm:function(){var e,t=(0,s.Z)(n);try{for(t.s();!(e=t.n()).done;){var i=e.value;v("DELETE","/api/v1/group/".concat((0,l.LL)(i)))}}catch(r){t.e(r)}finally{t.f()}},onClose:function(){return x(!1)},confirmationContent:(0,f.jsxs)(r.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",g]})})}},22074:function(e,n,t){t.r(n),t.d(n,{default:function(){return L},formatPolicy:function(){return k}});var s=t(29439),i=t(72791),r=t(57689),o=t(29945),l=t(31776),c=t(82342),a=t(56087),u=t(38442),d=t(45248),f=t(87995),x=t(81551),h=t(74616),p=t(39134),m=t(23814),j=t(40228),v=t(56028),g=t(80184),b=function(e){var n=e.title,t=void 0===n?"":n,r=e.groupStatus,a=void 0===r?"enabled":r,u=e.preSelectedUsers,h=void 0===u?[]:u,p=e.selectedGroup,b=void 0===p?"":p,Z=e.open,y=e.onClose,S=(0,x.TL)(),C=(0,i.useState)(h),P=(0,s.Z)(C,2),k=P[0],L=P[1];return(0,g.jsxs)(v.Z,{modalOpen:Z,onClose:y,title:t,titleIcon:(0,g.jsx)(o.ZmA,{}),children:[(0,g.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(o.bSr,{label:"Selected Group",sx:{width:"100%"},children:b}),(0,g.jsx)(j.Z,{selectedUsers:k,setSelectedUsers:L,editMode:!b})]}),(0,g.jsxs)(o.rjZ,{item:!0,xs:12,sx:m.ID.modalButtonBar,children:[(0,g.jsx)(o.zxk,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:function(){L(h)},label:"Reset"}),(0,g.jsx)(o.zxk,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:function(){l.h.group.updateGroup((0,d.LL)(b),{members:k,status:a}).then((function(){y()})).catch((function(e){y(),S((0,f.zb)((0,c.g)(e.error)))}))},label:"Save"})]})]})},Z=t(88896),y=t(59114),S=t(27454),C=t(99670),P=t(47974),k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},L=function(){var e=(0,x.TL)(),n=(0,r.s0)(),t=(0,r.UO)(),m=(0,i.useState)({}),j=(0,s.Z)(m,2),v=j[0],L=j[1],A=(0,i.useState)(!1),U=(0,s.Z)(A,2),w=U[0],F=U[1],G=(0,i.useState)(!1),K=(0,s.Z)(G,2),M=K[0],E=K[1],I=(0,i.useState)(!1),z=(0,s.Z)(I,2),N=z[0],T=z[1],B=(0,i.useState)(""),D=(0,s.Z)(B,2),O=D[0],R=D[1],Q=(0,i.useState)("members"),_=(0,s.Z)(Q,2),H=_[0],W=_[1],X=(0,d.IO)(t.groupName||""),Y=v.members,J=void 0===Y?[]:Y,V=v.policy,q=void 0===V?"":V,$=v.status,ee=J.filter((function(e){return e.includes(O)})),ne=(0,u.F)(a.C3,a.iw,!0);(0,i.useEffect)((function(){e((0,f.Sc)("group_details"))}),[]),(0,i.useEffect)((function(){X&&ae()}),[X]);var te=k(q),se="enabled"===$,ie=J.length>0?"Edit Members":"Add Members",re=(0,u.F)(a.C3,a.k_),oe=(0,u.F)(a.C3,a.kt,!0),le=(0,u.F)(a.C3,a.UA,!0),ce=(0,u.F)(a.C3,a.GD,!0);function ae(){re&&l.h.group.groupInfo((0,d.LL)(X)).then((function(e){L(e.data)})).catch((function(n){e((0,f.zb)((0,c.g)(n.error))),L({})}))}var ue=(0,g.jsxs)(o.xuv,{onMouseMove:function(){e((0,f.Sc)("groups_members"))},children:[(0,g.jsx)(o.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(o.xuv,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(y.Z,{placeholder:"Search members",onChange:function(e){R(e)},value:O,sx:{maxWidth:280}}),(0,g.jsx)(u.s,{resource:a.C3,scopes:a.uH,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:oe?ie:(0,a.MK)(a.vN,"edit Group membership"),children:(0,g.jsx)(o.zxk,{id:"add-user-group",label:ie,variant:"callAction",icon:(0,g.jsx)(o.dtP,{}),onClick:function(){E(!0)},disabled:!oe})})})]}),children:"Members"}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.Rs,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:ne?"":(0,a.MK)(a.iw,"view User details"),children:(0,g.jsx)(o.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.USERS,"/").concat((0,d.LL)(e)))},disableButtonFunction:function(){return!ne}}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:ee,entityName:"Users"})})})})]}),de=(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(o.xuv,{onMouseMove:function(){e((0,f.Sc)("groups_policies"))},children:(0,g.jsx)(o.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(S.Z,{tooltip:le?"Set Policies":(0,a.MK)(a.UA,"assign Policies"),children:(0,g.jsx)(o.zxk,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(o.v42,{}),onClick:function(){F(!0)},disabled:!le})}),children:"Policies"})}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(S.Z,{tooltip:ce?"":(0,a.MK)(a.GD,"view Policy details"),children:(0,g.jsx)(o.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.POLICIES,"/").concat((0,d.LL)(e)))},disableButtonFunction:function(){return!ce}}],columns:[{label:"Policy"}],isLoading:!1,records:te,entityName:"Policies"})})})]});return(0,g.jsxs)(i.Fragment,{children:[w?(0,g.jsx)(p.default,{open:w,selectedGroups:[X],selectedUser:null,closeModalAndRefresh:function(){F(!1),ae(),e((0,h.ue)([]))}}):null,M?(0,g.jsx)(b,{selectedGroup:X,onSaveClick:function(){},title:ie,groupStatus:$,preSelectedUsers:J,open:M,onClose:function(){E(!1),ae()}}):null,N&&(0,g.jsx)(Z.default,{deleteOpen:N,selectedGroups:[X],closeDeleteModalAndRefresh:function(e){T(!1),e&&n(a.gA.GROUPS)}}),(0,g.jsx)(P.Z,{label:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(o.hbI,{label:"Groups",onClick:function(){return n(a.gA.GROUPS)}})}),actions:(0,g.jsx)(C.Z,{})}),(0,g.jsxs)(o.Xgh,{children:[(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(o.UHn,{icon:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(o.wws,{width:40})}),title:X,subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(o.xuv,{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:se?"Enabled":"Disabled"}),(0,g.jsx)(S.Z,{tooltip:(0,u.F)(a.C3,a.xh,!0)?"":(0,a.MK)(a.xh,"enable or disable Groups"),children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.xh,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(o.rsf,{indicatorLabels:["Enabled","Disabled"],checked:se,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var n;n=!se,l.h.group.updateGroup((0,d.LL)(X),{members:J,status:n?"enabled":"disabled"}).then((function(){ae()})).catch((function(n){e((0,f.zb)((0,c.g)(n.error)))}))},switchOnly:!0})})}),(0,g.jsx)(S.Z,{tooltip:"Delete Group",children:(0,g.jsx)(o.zxk,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(o.XHJ,{}),onClick:function(){T(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(o.mQc,{options:[{tabConfig:{id:"members",label:"Members"},content:ue},{tabConfig:{id:"policies",label:"Policies"},content:de}],currentTabOrPath:H,onTabClick:W})})]})]})}},40228:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),o=t(26181),l=t.n(o),c=t(31776),a=t(82342),u=t(29945),d=t(40986),f=t(21639),x=t(87995),h=t(81551),p=t(59114),m=t(80184);n.Z=function(e){var n=e.selectedUsers,t=e.setSelectedUsers,o=e.editMode,j=void 0!==o&&o,v=(0,h.TL)(),g=(0,r.useState)([]),b=(0,i.Z)(g,2),Z=b[0],y=b[1],S=(0,r.useState)(!1),C=(0,i.Z)(S,2),P=C[0],k=C[1],L=(0,r.useState)(""),A=(0,i.Z)(L,2),U=A[0],w=A[1],F=(0,r.useCallback)((function(){c.h.users.listUsers().then((function(e){var n=l()(e.data,"users",[]);n||(n=[]),y(n.sort(f.LQ)),k(!1)})).catch((function(e){v((0,x.zb)((0,a.g)(e.error))),k(!1)}))}),[v]);(0,r.useEffect)((function(){k(!0)}),[]),(0,r.useEffect)((function(){P&&F()}),[P,F]);var G=n||[],K=Z.filter((function(e){return e.accessKey.includes(U)}));return(0,m.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,m.jsxs)(u.xuv,{children:[P&&(0,m.jsx)(d.Z,{}),(null===Z||void 0===Z?void 0:Z.length)>0?(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,m.jsx)(p.Z,{label:j?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:w,value:U})}),(0,m.jsx)(u.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var n=e.target,i=n.value,r=n.checked,o=(0,s.Z)(G);return r?o.push(i):o=o.filter((function(e){return e!==i})),t(o),o},selectedItems:G,isLoading:P,records:K,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,m.jsx)(u.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},58400:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),o=t(40986),l=t(29945),c=t(21639),a=t(59114),u=t(87995),d=t(81551),f=t(74616),x=t(78687),h=t(31776),p=t(80184);n.Z=function(e){var n=e.noTitle,t=void 0!==n&&n,m=(0,d.TL)(),j=(0,r.useState)([]),v=(0,i.Z)(j,2),g=v[0],b=v[1],Z=(0,r.useState)(!1),y=(0,i.Z)(Z,2),S=y[0],C=y[1],P=(0,r.useState)(""),k=(0,i.Z)(P,2),L=k[0],A=k[1],U=(0,x.v9)((function(e){return e.createUser.selectedPolicies})),w=(0,r.useCallback)((function(){C(!0),h.h.policies.listPolicies().then((function(e){var n,t=null!==(n=e.data.policies)&&void 0!==n?n:[];C(!1),b(t.sort(c.g4))})).catch((function(e){C(!1),m((0,u.zb)(e))}))}),[m]);(0,r.useEffect)((function(){C(!0)}),[]),(0,r.useEffect)((function(){S&&w()}),[S,w]);var F=g.filter((function(e){return e.name.includes(L)}));return(0,p.jsxs)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:[S&&(0,p.jsx)(o.Z,{}),g.length>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(a.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){A(e)},value:L,label:t?"":"Assign Policies"})}),(0,p.jsx)(l.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,r=(0,s.Z)(U);i?r.push(t):r=r.filter((function(e){return e!==t})),r=r.filter((function(e){return""!==e})),m((0,f.ue)(r))},selectedItems:U,isLoading:S,records:F,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(l.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},39134:function(e,n,t){t.r(n);var s=t(29439),i=t(72791),r=t(26181),o=t.n(r),l=t(78687),c=t(29945),a=t(40986),u=t(45248),d=t(87995),f=t(81551),x=t(23814),h=t(74616),p=t(56028),m=t(58400),j=t(81207),v=t(80184);n.default=function(e){var n=e.closeModalAndRefresh,t=e.selectedUser,r=e.selectedGroups,g=e.open,b=(0,f.TL)(),Z=(0,i.useState)(!1),y=(0,s.Z)(Z,2),S=y[0],C=y[1],P=(0,i.useState)([]),k=(0,s.Z)(P,2),L=k[0],A=k[1],U=(0,i.useState)([]),w=(0,s.Z)(U,2),F=w[0],G=w[1],K=(0,l.v9)((function(e){return e.createUser.selectedPolicies}));(0,i.useEffect)((function(){if(g){if(1===(null===r||void 0===r?void 0:r.length))return void(1===(null===r||void 0===r?void 0:r.length)&&j.Z.invoke("GET","/api/v1/group/".concat((0,u.LL)(r[0]))).then((function(e){var n=o()(e,"policy","");A(n.split(",")),G(n.split(",")),b((0,h.ue)(n.split(",")))})).catch((function(e){b((0,d.zb)(e)),C(!1)})));var e=o()(t,"policy",[]);A(e),G(e),b((0,h.ue)(e))}}),[g,null===r||void 0===r?void 0:r.length,t]);var M=o()(t,"accessKey","");return(0,v.jsxs)(p.Z,{onClose:function(){n()},modalOpen:g,title:"Set Policies",children:[(0,v.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(1===(null===r||void 0===r?void 0:r.length)||null!=t)&&(0,v.jsxs)(i.Fragment,{children:[(0,v.jsx)(c.bSr,{label:"Selected ".concat(null!==r?"Group":"User"),sx:{width:"100%"},children:null!==r?r[0]:M}),(0,v.jsx)(c.bSr,{label:"Current Policy",sx:{width:"100%"},children:L.join(", ")})]}),r&&(null===r||void 0===r?void 0:r.length)>1&&(0,v.jsx)(c.bSr,{label:"Selected Groups",sx:{width:"100%"},children:r.join(", ")}),(0,v.jsx)(c.rjZ,{item:!0,xs:12,children:(0,v.jsx)(m.Z,{selectedPolicy:F})})]}),(0,v.jsxs)(c.rjZ,{item:!0,xs:12,sx:x.ID.modalButtonBar,children:[(0,v.jsx)(c.zxk,{id:"reset",type:"button",variant:"regular",onClick:function(){G(L),b((0,h.ue)(L))},label:"Reset"}),(0,v.jsx)(c.zxk,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:S,onClick:function(){var e=null,s=null;null!==r?s=r:null!==t&&(e=[t.accessKey]||0),C(!0),j.Z.invoke("PUT","/api/v1/set-policy-multi",{name:K,groups:s,users:e}).then((function(){C(!1),n()})).catch((function(e){C(!1),b((0,d.zb)(e))}))},label:"Save"})]}),S&&(0,v.jsx)(c.rjZ,{item:!0,xs:12,children:(0,v.jsx)(a.Z,{})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return o},LQ:function(){return s},V2:function(){return r},g4:function(){return i}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\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 onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\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={deleteLoading}\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 { encodeURLString } from \"../../../common/utils\";\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(encodeURLString(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 setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\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 { decodeURLString, encodeURLString } from \"../../../common/utils\";\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\nexport const 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 groupName = decodeURLString(params.groupName || \"\");\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 (groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [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(encodeURLString(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(encodeURLString(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(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n },\n disableButtonFunction: () => !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(`${IAM_PAGES.POLICIES}/${encodeURLString(policy)}`);\n },\n disableButtonFunction: () => !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={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 } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\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\";\nimport { LinearProgress } from \"@mui/material\";\nimport { DataTable, Grid, Box } 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\";\nimport {\n Error,\n HttpResponse,\n ListPoliciesResponse,\n} from \"../../../api/consoleApi\";\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: HttpResponse) => {\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 } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\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 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/${encodeURLString(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","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment","_ref$title","_ref$groupStatus","groupStatus","_ref$preSelectedUsers","preSelectedUsers","_ref$selectedGroup","selectedGroup","open","_useState","useState","_useState2","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","api","updateGroup","members","status","then","catch","setModalErrorSnackMessage","errorToHandler","error","formatPolicy","policy","arguments","undefined","split","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","_useState3","_useState4","policyOpen","setPolicyOpen","_useState5","_useState6","usersOpen","setUsersOpen","_useState7","_useState8","setDeleteOpen","_useState9","_useState10","memberFilter","setMemberFilter","_useState11","_useState12","currentTab","setCurrentTab","groupName","decodeURLString","_groupDetails$members","_groupDetails$policy","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","res","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","disableButtonFunction","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","_ref$editMode","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","LinearProgress","elementKey","onSelect","targetD","target","elements","_toConsumableArray","push","element","idField","customPaperHeight","textAlign","padding","_ref$noTitle","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","color","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2074.7e79443f.chunk.js b/portal-ui/build/static/js/2074.7e79443f.chunk.js
new file mode 100644
index 000000000..c361e6547
--- /dev/null
+++ b/portal-ui/build/static/js/2074.7e79443f.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2074,8896,9134],{88896:function(e,n,t){t.r(n);var s=t(37762),i=t(29439),r=t(72791),l=t(29945),o=t(45248),c=t(87995),a=t(81551),u=t(23508),d=t(9505),x=t(80184);n.default=function(e){var n=e.selectedGroups,t=e.deleteOpen,f=e.closeDeleteModalAndRefresh,h=(0,a.TL)(),p=(0,d.Z)((function(){return f(!0)}),(function(e){h((0,c.Ih)(e)),f(!1)})),m=(0,i.Z)(p,2),j=m[0],v=m[1];if(!n)return null;var g=n.map((function(e){return(0,x.jsx)("div",{children:(0,x.jsx)("b",{children:e})},e)}));return(0,x.jsx)(u.Z,{title:"Delete Group".concat(n.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,x.jsx)(l.NvT,{}),isLoading:j,onConfirm:function(){var e,t=(0,s.Z)(n);try{for(t.s();!(e=t.n()).done;){var i=e.value;v("DELETE","/api/v1/group/".concat((0,o.LL)(i)))}}catch(r){t.e(r)}finally{t.f()}},onClose:function(){return f(!1)},confirmationContent:(0,x.jsxs)(r.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",g]})})}},22074:function(e,n,t){t.r(n),t.d(n,{default:function(){return L},formatPolicy:function(){return k}});var s=t(29439),i=t(72791),r=t(57689),l=t(29945),o=t(31776),c=t(82342),a=t(56087),u=t(38442),d=t(45248),x=t(87995),f=t(81551),h=t(74616),p=t(39134),m=t(23814),j=t(40228),v=t(56028),g=t(80184),b=function(e){var n=e.title,t=void 0===n?"":n,r=e.groupStatus,a=void 0===r?"enabled":r,u=e.preSelectedUsers,h=void 0===u?[]:u,p=e.selectedGroup,b=void 0===p?"":p,Z=e.open,y=e.onClose,S=(0,f.TL)(),C=(0,i.useState)(h),P=(0,s.Z)(C,2),k=P[0],L=P[1];return(0,g.jsxs)(v.Z,{modalOpen:Z,onClose:y,title:t,titleIcon:(0,g.jsx)(l.ZmA,{}),children:[(0,g.jsxs)(l.ltY,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(l.bSr,{label:"Selected Group",sx:{width:"100%"},children:b}),(0,g.jsx)(j.Z,{selectedUsers:k,setSelectedUsers:L,editMode:!b})]}),(0,g.jsxs)(l.rjZ,{item:!0,xs:12,sx:m.ID.modalButtonBar,children:[(0,g.jsx)(l.zxk,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:function(){L(h)},label:"Reset"}),(0,g.jsx)(l.zxk,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:function(){o.h.group.updateGroup((0,d.LL)(b),{members:k,status:a}).then((function(){y()})).catch((function(e){y(),S((0,x.zb)((0,c.g)(e.error)))}))},label:"Save"})]})]})},Z=t(88896),y=t(59114),S=t(27454),C=t(99670),P=t(47974),k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},L=function(){var e=(0,f.TL)(),n=(0,r.s0)(),t=(0,r.UO)(),m=(0,i.useState)({}),j=(0,s.Z)(m,2),v=j[0],L=j[1],A=(0,i.useState)(!1),U=(0,s.Z)(A,2),w=U[0],G=U[1],F=(0,i.useState)(!1),K=(0,s.Z)(F,2),M=K[0],E=K[1],I=(0,i.useState)(!1),z=(0,s.Z)(I,2),N=z[0],T=z[1],D=(0,i.useState)(""),O=(0,s.Z)(D,2),B=O[0],R=O[1],Q=(0,i.useState)("members"),_=(0,s.Z)(Q,2),H=_[0],W=_[1],X=(0,d.IO)(t.groupName||""),Y=v.members,J=void 0===Y?[]:Y,V=v.policy,q=void 0===V?"":V,$=v.status,ee=J.filter((function(e){return e.includes(B)})),ne=(0,u.F)(a.C3,a.iw,!0);(0,i.useEffect)((function(){e((0,x.Sc)("group_details"))}),[]),(0,i.useEffect)((function(){X&&ae()}),[X]);var te=k(q),se="enabled"===$,ie=J.length>0?"Edit Members":"Add Members",re=(0,u.F)(a.C3,a.k_),le=(0,u.F)(a.C3,a.kt,!0),oe=(0,u.F)(a.C3,a.UA,!0),ce=(0,u.F)(a.C3,a.GD,!0);function ae(){re&&o.h.group.groupInfo((0,d.LL)(X)).then((function(e){L(e.data)})).catch((function(n){e((0,x.zb)((0,c.g)(n.error))),L({})}))}var ue=(0,g.jsxs)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_members"))},children:[(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(y.Z,{placeholder:"Search members",onChange:function(e){R(e)},value:B,sx:{maxWidth:280}}),(0,g.jsx)(u.s,{resource:a.C3,scopes:a.uH,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:le?ie:(0,a.MK)(a.vN,"edit Group membership"),children:(0,g.jsx)(l.zxk,{id:"add-user-group",label:ie,variant:"callAction",icon:(0,g.jsx)(l.dtP,{}),onClick:function(){E(!0)},disabled:!le})})})]}),children:"Members"}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.Rs,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:ne?"":(0,a.MK)(a.iw,"view User details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.USERS,"/").concat((0,d.LL)(e)))},isDisabled:!ne}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:ee,entityName:"Users"})})})})]}),de=(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_policies"))},children:(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(S.Z,{tooltip:oe?"Set Policies":(0,a.MK)(a.UA,"assign Policies"),children:(0,g.jsx)(l.zxk,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(l.v42,{}),onClick:function(){G(!0)},disabled:!oe})}),children:"Policies"})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(S.Z,{tooltip:ce?"":(0,a.MK)(a.GD,"view Policy details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.POLICIES,"/").concat((0,d.LL)(e)))},isDisabled:!ce}],columns:[{label:"Policy"}],isLoading:!1,records:te,entityName:"Policies"})})})]});return(0,g.jsxs)(i.Fragment,{children:[w?(0,g.jsx)(p.default,{open:w,selectedGroups:[X],selectedUser:null,closeModalAndRefresh:function(){G(!1),ae(),e((0,h.ue)([]))}}):null,M?(0,g.jsx)(b,{selectedGroup:X,onSaveClick:function(){},title:ie,groupStatus:$,preSelectedUsers:J,open:M,onClose:function(){E(!1),ae()}}):null,N&&(0,g.jsx)(Z.default,{deleteOpen:N,selectedGroups:[X],closeDeleteModalAndRefresh:function(e){T(!1),e&&n(a.gA.GROUPS)}}),(0,g.jsx)(P.Z,{label:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.hbI,{label:"Groups",onClick:function(){return n(a.gA.GROUPS)}})}),actions:(0,g.jsx)(C.Z,{})}),(0,g.jsxs)(l.Xgh,{children:[(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.UHn,{icon:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.wws,{width:40})}),title:X,subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(l.xuv,{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:se?"Enabled":"Disabled"}),(0,g.jsx)(S.Z,{tooltip:(0,u.F)(a.C3,a.xh,!0)?"":(0,a.MK)(a.xh,"enable or disable Groups"),children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.xh,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(l.rsf,{indicatorLabels:["Enabled","Disabled"],checked:se,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var n;n=!se,o.h.group.updateGroup((0,d.LL)(X),{members:J,status:n?"enabled":"disabled"}).then((function(){ae()})).catch((function(n){e((0,x.zb)((0,c.g)(n.error)))}))},switchOnly:!0})})}),(0,g.jsx)(S.Z,{tooltip:"Delete Group",children:(0,g.jsx)(l.zxk,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(l.XHJ,{}),onClick:function(){T(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.mQc,{options:[{tabConfig:{id:"members",label:"Members"},content:ue},{tabConfig:{id:"policies",label:"Policies"},content:de}],currentTabOrPath:H,onTabClick:W})})]})]})}},40228:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(26181),o=t.n(l),c=t(31776),a=t(82342),u=t(29945),d=t(40986),x=t(21639),f=t(87995),h=t(81551),p=t(59114),m=t(80184);n.Z=function(e){var n=e.selectedUsers,t=e.setSelectedUsers,l=e.editMode,j=void 0!==l&&l,v=(0,h.TL)(),g=(0,r.useState)([]),b=(0,i.Z)(g,2),Z=b[0],y=b[1],S=(0,r.useState)(!1),C=(0,i.Z)(S,2),P=C[0],k=C[1],L=(0,r.useState)(""),A=(0,i.Z)(L,2),U=A[0],w=A[1],G=(0,r.useCallback)((function(){c.h.users.listUsers().then((function(e){var n=o()(e.data,"users",[]);n||(n=[]),y(n.sort(x.LQ)),k(!1)})).catch((function(e){v((0,f.zb)((0,a.g)(e.error))),k(!1)}))}),[v]);(0,r.useEffect)((function(){k(!0)}),[]),(0,r.useEffect)((function(){P&&G()}),[P,G]);var F=n||[],K=Z.filter((function(e){return e.accessKey.includes(U)}));return(0,m.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,m.jsxs)(u.xuv,{children:[P&&(0,m.jsx)(d.Z,{}),(null===Z||void 0===Z?void 0:Z.length)>0?(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,m.jsx)(p.Z,{label:j?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:w,value:U})}),(0,m.jsx)(u.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var n=e.target,i=n.value,r=n.checked,l=(0,s.Z)(F);return r?l.push(i):l=l.filter((function(e){return e!==i})),t(l),l},selectedItems:F,isLoading:P,records:K,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,m.jsx)(u.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},58400:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(40986),o=t(29945),c=t(21639),a=t(59114),u=t(87995),d=t(81551),x=t(74616),f=t(78687),h=t(31776),p=t(80184);n.Z=function(e){var n=e.noTitle,t=void 0!==n&&n,m=(0,d.TL)(),j=(0,r.useState)([]),v=(0,i.Z)(j,2),g=v[0],b=v[1],Z=(0,r.useState)(!1),y=(0,i.Z)(Z,2),S=y[0],C=y[1],P=(0,r.useState)(""),k=(0,i.Z)(P,2),L=k[0],A=k[1],U=(0,f.v9)((function(e){return e.createUser.selectedPolicies})),w=(0,r.useCallback)((function(){C(!0),h.h.policies.listPolicies().then((function(e){var n,t=null!==(n=e.data.policies)&&void 0!==n?n:[];C(!1),b(t.sort(c.g4))})).catch((function(e){C(!1),m((0,u.zb)(e))}))}),[m]);(0,r.useEffect)((function(){C(!0)}),[]),(0,r.useEffect)((function(){S&&w()}),[S,w]);var G=g.filter((function(e){return e.name.includes(L)}));return(0,p.jsxs)(o.rjZ,{item:!0,xs:12,className:"inputItem",children:[S&&(0,p.jsx)(l.Z,{}),g.length>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(o.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(a.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){A(e)},value:L,label:t?"":"Assign Policies"})}),(0,p.jsx)(o.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,r=(0,s.Z)(U);i?r.push(t):r=r.filter((function(e){return e!==t})),r=r.filter((function(e){return""!==e})),m((0,x.ue)(r))},selectedItems:U,isLoading:S,records:G,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(o.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},39134:function(e,n,t){t.r(n);var s=t(29439),i=t(72791),r=t(26181),l=t.n(r),o=t(78687),c=t(29945),a=t(40986),u=t(45248),d=t(87995),x=t(81551),f=t(23814),h=t(74616),p=t(56028),m=t(58400),j=t(81207),v=t(80184);n.default=function(e){var n=e.closeModalAndRefresh,t=e.selectedUser,r=e.selectedGroups,g=e.open,b=(0,x.TL)(),Z=(0,i.useState)(!1),y=(0,s.Z)(Z,2),S=y[0],C=y[1],P=(0,i.useState)([]),k=(0,s.Z)(P,2),L=k[0],A=k[1],U=(0,i.useState)([]),w=(0,s.Z)(U,2),G=w[0],F=w[1],K=(0,o.v9)((function(e){return e.createUser.selectedPolicies}));(0,i.useEffect)((function(){if(g){if(1===(null===r||void 0===r?void 0:r.length))return void(1===(null===r||void 0===r?void 0:r.length)&&j.Z.invoke("GET","/api/v1/group/".concat((0,u.LL)(r[0]))).then((function(e){var n=l()(e,"policy","");A(n.split(",")),F(n.split(",")),b((0,h.ue)(n.split(",")))})).catch((function(e){b((0,d.zb)(e)),C(!1)})));var e=l()(t,"policy",[]);A(e),F(e),b((0,h.ue)(e))}}),[g,null===r||void 0===r?void 0:r.length,t]);var M=l()(t,"accessKey","");return(0,v.jsxs)(p.Z,{onClose:function(){n()},modalOpen:g,title:"Set Policies",children:[(0,v.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(1===(null===r||void 0===r?void 0:r.length)||null!=t)&&(0,v.jsxs)(i.Fragment,{children:[(0,v.jsx)(c.bSr,{label:"Selected ".concat(null!==r?"Group":"User"),sx:{width:"100%"},children:null!==r?r[0]:M}),(0,v.jsx)(c.bSr,{label:"Current Policy",sx:{width:"100%"},children:L.join(", ")})]}),r&&(null===r||void 0===r?void 0:r.length)>1&&(0,v.jsx)(c.bSr,{label:"Selected Groups",sx:{width:"100%"},children:r.join(", ")}),(0,v.jsx)(c.rjZ,{item:!0,xs:12,children:(0,v.jsx)(m.Z,{selectedPolicy:G})})]}),(0,v.jsxs)(c.rjZ,{item:!0,xs:12,sx:f.ID.modalButtonBar,children:[(0,v.jsx)(c.zxk,{id:"reset",type:"button",variant:"regular",onClick:function(){F(L),b((0,h.ue)(L))},label:"Reset"}),(0,v.jsx)(c.zxk,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:S,onClick:function(){var e=null,s=null;null!==r?s=r:null!==t&&(e=[t.accessKey]||0),C(!0),j.Z.invoke("PUT","/api/v1/set-policy-multi",{name:K,groups:s,users:e}).then((function(){C(!1),n()})).catch((function(e){C(!1),b((0,d.zb)(e))}))},label:"Save"})]}),S&&(0,v.jsx)(c.rjZ,{item:!0,xs:12,children:(0,v.jsx)(a.Z,{})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return l},LQ:function(){return s},V2:function(){return r},g4:function(){return i}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\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 onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\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={deleteLoading}\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 { encodeURLString } from \"../../../common/utils\";\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(encodeURLString(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 setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\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 { decodeURLString, encodeURLString } from \"../../../common/utils\";\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\nexport const 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 groupName = decodeURLString(params.groupName || \"\");\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 (groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [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(encodeURLString(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(encodeURLString(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(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\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(`${IAM_PAGES.POLICIES}/${encodeURLString(policy)}`);\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={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 } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\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\";\nimport { LinearProgress } from \"@mui/material\";\nimport { DataTable, Grid, Box } 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\";\nimport {\n Error,\n HttpResponse,\n ListPoliciesResponse,\n} from \"../../../api/consoleApi\";\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: HttpResponse) => {\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 } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\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 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/${encodeURLString(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","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment","_ref$title","_ref$groupStatus","groupStatus","_ref$preSelectedUsers","preSelectedUsers","_ref$selectedGroup","selectedGroup","open","_useState","useState","_useState2","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","api","updateGroup","members","status","then","catch","setModalErrorSnackMessage","errorToHandler","error","formatPolicy","policy","arguments","undefined","split","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","_useState3","_useState4","policyOpen","setPolicyOpen","_useState5","_useState6","usersOpen","setUsersOpen","_useState7","_useState8","setDeleteOpen","_useState9","_useState10","memberFilter","setMemberFilter","_useState11","_useState12","currentTab","setCurrentTab","groupName","decodeURLString","_groupDetails$members","_groupDetails$policy","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","res","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","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","_ref$editMode","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","LinearProgress","elementKey","onSelect","targetD","target","elements","_toConsumableArray","push","element","idField","customPaperHeight","textAlign","padding","_ref$noTitle","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","color","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2260.71dd3e05.chunk.js.map b/portal-ui/build/static/js/2260.71dd3e05.chunk.js.map
deleted file mode 100644
index 000d1b82d..000000000
--- a/portal-ui/build/static/js/2260.71dd3e05.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2260.71dd3e05.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/utils/esm/usePreviousProps.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport default function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value,\n inputValue\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n let listboxNode = listboxRef.current;\n if (listboxRef.current.getAttribute('role') !== 'listbox') {\n listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n }\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n //\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const checkHighlightedOptionExists = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n const previousHighlightedOptionExists = filteredOptions.some(option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n if (previousHighlightedOptionExists) {\n return true;\n }\n }\n }\n return false;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n // If it exists and the value and the inputValue haven't changed, return, otherwise continue execution\n if (checkHighlightedOptionExists()) {\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseMove = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n if (highlightedIndexRef.current !== index) {\n setHighlightedIndex({\n event,\n index,\n reason: 'mouse'\n });\n }\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (inputValue === '' || !open) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperatively so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseMove: handleOptionMouseMove,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n });\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {T[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {T[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {T} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {T} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {T} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {T} option The option to test.\n * @param {T} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T|T[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {T} option The option to render.\n * @param {object} state The state of the component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {T[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","import * as React from 'react';\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nexport default usePreviousProps;"],"names":["stripDiacritics","string","normalize","replace","findIndex","array","comp","i","length","defaultFilterOptions","config","arguments","undefined","_config$ignoreAccents","ignoreAccents","_config$ignoreCase","ignoreCase","limit","_config$matchFrom","matchFrom","stringify","_config$trim","trim","options","_ref","inputValue","getOptionLabel","input","toLowerCase","filteredOptions","filter","option","candidate","indexOf","slice","createFilterOptions","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","current","parentElement","contains","document","activeElement","useAutocomplete","props","_props$unstable_isAct","unstable_isActiveElementInListbox","_props$unstable_class","unstable_classNamePrefix","_props$autoComplete","autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","componentName","_props$defaultValue","defaultValue","multiple","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","disabledProp","disabled","_props$disabledItemsF","disabledItemsFocusable","_props$disableListWra","disableListWrap","_props$filterOptions","filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_option$label","label","groupBy","_props$handleHomeEndK","handleHomeEndKeys","idProp","id","_props$includeInputIn","includeInputInList","inputValueProp","_props$isOptionEqualT","isOptionEqualToValue","value","_props$multiple","onChange","onClose","onHighlightChange","onInputChange","onOpen","openProp","open","_props$openOnFocus","openOnFocus","_props$readOnly","readOnly","_props$selectOnFocus","selectOnFocus","valueProp","useId","optionLabel","String","ignoreFocus","React","firstFocus","inputRef","_React$useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","_React$useState3","_React$useState4","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled","useControlled","controlled","default","name","_useControlled2","setValueState","_useControlled3","state","_useControlled4","setInputValueState","_React$useState5","_React$useState6","focused","setFocused","resetInputValue","event","newValue","newInputValue","_useControlled5","_useControlled6","setOpenState","_React$useState7","_React$useState8","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","some","value2","previousProps","usePreviousProps","valueChange","listboxAvailable","focusTag","useEventCallback","tagToFocus","focus","querySelector","concat","setHighlightedIndex","_ref2","index","_ref2$reason","reason","removeAttribute","setAttribute","prev","classList","remove","listboxNode","getAttribute","add","scrollHeight","clientHeight","element","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","_ref3","diff","_ref3$direction","direction","_ref3$reason","nextIndex","nextFocus","nextFocusDisabled","hasAttribute","validOptionIndex","maxIndex","newIndex","Math","abs","getNextIndex","setSelectionRange","syncHighlightedIndex","value1","every","val","previousHighlightedOption","checkHighlightedOptionExists","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","node","setRef","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","origin","Array","isArray","push","splice","ctrlKey","metaKey","blur","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","other","onKeyDown","defaultMuiPrevented","key","which","preventDefault","stopPropagation","handleFocus","handleBlur","handleInputChange","target","handleOptionMouseMove","Number","currentTarget","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","select","handleInputMouseDown","dirty","groupedOptions","Map","reduce","acc","group","getRootProps","_extends","onMouseDown","onClick","getInputLabelProps","htmlFor","getInputProps","onBlur","onFocus","ref","autoCapitalize","spellCheck","role","getClearProps","tabIndex","getPopupIndicatorProps","getTagProps","_ref4","onDelete","getListboxProps","getOptionProps","_ref5","selected","onMouseMove","onTouchStart","expanded","createSvgIcon","_jsx","d","getAutocompleteUtilityClass","slot","generateUtilityClass","_ClearIcon","_ArrowDropDownIcon","generateUtilityClasses","_excluded","_excluded2","AutocompleteRoot","styled","overridesResolver","styles","ownerState","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","size","_defineProperty","autocompleteClasses","tag","capitalize","inputRoot","root","_ref6","_extends2","_$concat","_$concat2","_$concat3","_extends3","clearIndicator","visibility","width","margin","maxWidth","flexWrap","paddingRight","minWidth","inputClasses","paddingBottom","padding","inputBaseClasses","sizeSmall","outlinedInputClasses","endAdornment","right","paddingTop","paddingLeft","filledInputClasses","hiddenLabel","flexGrow","textOverflow","opacity","AutocompleteEndAdornment","position","top","AutocompleteClearIndicator","IconButton","marginRight","AutocompletePopupIndicator","_ref7","popupIndicator","popupIndicatorOpen","_ref8","transform","AutocompletePopper","Popper","popper","disablePortal","popperDisablePortal","_ref10","theme","zIndex","vars","modal","AutocompletePaper","Paper","paper","_ref11","typography","body1","overflow","AutocompleteLoading","loading","_ref12","color","palette","text","secondary","AutocompleteNoOptions","noOptions","_ref13","AutocompleteListbox","listbox","_ref14","_ariaSelectedTru","_$concat4","listStyle","maxHeight","minHeight","display","justifyContent","alignItems","cursor","boxSizing","outline","WebkitTapHighlightColor","breakpoints","up","backgroundColor","action","hover","disabledOpacity","pointerEvents","focusVisible","primary","mainChannel","selectedOpacity","alpha","main","hoverOpacity","focusOpacity","AutocompleteGroupLabel","ListSubheader","groupLabel","_ref16","background","AutocompleteGroupUl","groupUl","inProps","_slotProps$clearIndic","_slotProps$paper","_slotProps$popper","_slotProps$popupIndic","startAdornment","useThemeProps","ChipProps","className","_props$clearIcon","clearIcon","ClearIcon","fontSize","_props$clearText","clearText","_props$closeText","closeText","_props$componentsProp","componentsProps","_props$disabled","_props$disablePortal","_props$forcePopupIcon","forcePopupIcon","_props$fullWidth","_props$getLimitTagsTe","getLimitTagsText","more","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","_props$PaperComponent","PaperComponent","_props$PopperComponen","PopperComponent","_props$popupIcon","popupIcon","ArrowDropDownIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","_props$size","_props$slotProps","slotProps","_objectWithoutPropertiesLoose","_useAutocomplete","externalListboxRef","_getListboxProps","otherListboxProps","combinedListboxRef","useForkRef","classes","slots","composeClasses","useUtilityClasses","getCustomizedTagProps","params","map","Chip","children","_jsxs","component","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","clsx","InputLabelProps","InputProps","title","inputProps","as","style","clientWidth","option2","index2","FormControlContext","formControlState","states","muiFormControl","useFormControl","FormLabelRoot","colorSecondary","filled","lineHeight","formLabelClasses","error","AsteriskComponent","asterisk","FormLabel","_props$component","fcs","required","getFormLabelUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","shrink","disableAnimation","animated","variant","transformOrigin","whiteSpace","left","transition","transitions","create","duration","shorter","easing","easeOut","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses","getListSubheaderUtilityClass","ListSubheaderRoot","disableGutters","gutters","inset","disableSticky","sticky","fontFamily","fontWeight","fontWeightMedium","pxToRem","_props$color","_props$disableGutters","_props$disableSticky","_props$inset","muiSkipListHighlight"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2260.71dd3e05.chunk.js b/portal-ui/build/static/js/2260.c0246fc5.chunk.js
similarity index 99%
rename from portal-ui/build/static/js/2260.71dd3e05.chunk.js
rename to portal-ui/build/static/js/2260.c0246fc5.chunk.js
index 78ed13b61..e870768fe 100644
--- a/portal-ui/build/static/js/2260.71dd3e05.chunk.js
+++ b/portal-ui/build/static/js/2260.c0246fc5.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2260],{67252:function(e,t,n){n.d(t,{Z:function(){return oe}});var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(28182),c=n(94419),s=n(29439),u=n(18252),p=n(88637),d=n(36229),f=n(97054),v=n(62971);function g(e){return"undefined"!==typeof e.normalize?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e}function m(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=e.ignoreAccents,n=void 0===t||t,o=e.ignoreCase,r=void 0===o||o,a=e.limit,i=e.matchFrom,l=void 0===i?"any":i,c=e.stringify,s=e.trim,u=void 0!==s&&s;return function(e,t){var o=t.inputValue,i=t.getOptionLabel,s=u?o.trim():o;r&&(s=s.toLowerCase()),n&&(s=g(s));var p=s?e.filter((function(e){var t=(c||i)(e);return r&&(t=t.toLowerCase()),n&&(t=g(t)),"start"===l?0===t.indexOf(s):t.indexOf(s)>-1})):e;return"number"===typeof a?p.slice(0,a):p}}(),b=function(e){var t;return null!==e.current&&(null==(t=e.current.parentElement)?void 0:t.contains(document.activeElement))};function Z(e){var t,n=e.unstable_isActiveElementInListbox,o=void 0===n?b:n,r=e.unstable_classNamePrefix,l=void 0===r?"Mui":r,c=e.autoComplete,g=void 0!==c&&c,Z=e.autoHighlight,x=void 0!==Z&&Z,y=e.autoSelect,S=void 0!==y&&y,O=e.blurOnSelect,I=void 0!==O&&O,k=e.clearOnBlur,C=void 0===k?!e.freeSolo:k,P=e.clearOnEscape,w=void 0!==P&&P,L=e.componentName,A=void 0===L?"useAutocomplete":L,R=e.defaultValue,T=void 0===R?e.multiple?[]:null:R,M=e.disableClearable,z=void 0!==M&&M,N=e.disableCloseOnSelect,F=void 0!==N&&N,D=e.disabled,E=e.disabledItemsFocusable,W=void 0!==E&&E,j=e.disableListWrap,q=void 0!==j&&j,H=e.filterOptions,V=void 0===H?h:H,B=e.filterSelectedOptions,G=void 0!==B&&B,K=e.freeSolo,U=void 0!==K&&K,_=e.getOptionDisabled,J=e.getOptionLabel,Q=void 0===J?function(e){var t;return null!=(t=e.label)?t:e}:J,X=e.groupBy,Y=e.handleHomeEndKeys,$=void 0===Y?!e.freeSolo:Y,ee=e.id,te=e.includeInputInList,ne=void 0!==te&&te,oe=e.inputValue,re=e.isOptionEqualToValue,ae=void 0===re?function(e,t){return e===t}:re,ie=e.multiple,le=void 0!==ie&&ie,ce=e.onChange,se=e.onClose,ue=e.onHighlightChange,pe=e.onInputChange,de=e.onOpen,fe=e.open,ve=e.openOnFocus,ge=void 0!==ve&&ve,me=e.options,he=e.readOnly,be=void 0!==he&&he,Ze=e.selectOnFocus,xe=void 0===Ze?!e.freeSolo:Ze,ye=e.value,Se=(0,u.Z)(ee);t=function(e){var t=Q(e);return"string"!==typeof t?String(t):t};var Oe=i.useRef(!1),Ie=i.useRef(!0),ke=i.useRef(null),Ce=i.useRef(null),Pe=i.useState(null),we=(0,s.Z)(Pe,2),Le=we[0],Ae=we[1],Re=i.useState(-1),Te=(0,s.Z)(Re,2),Me=Te[0],ze=Te[1],Ne=x?0:-1,Fe=i.useRef(Ne),De=(0,p.Z)({controlled:ye,default:T,name:A}),Ee=(0,s.Z)(De,2),We=Ee[0],je=Ee[1],qe=(0,p.Z)({controlled:oe,default:"",name:A,state:"inputValue"}),He=(0,s.Z)(qe,2),Ve=He[0],Be=He[1],Ge=i.useState(!1),Ke=(0,s.Z)(Ge,2),Ue=Ke[0],_e=Ke[1],Je=i.useCallback((function(e,n){if((le?We.length0&&!be,st=(0,f.Z)((function(e){-1===e?ke.current.focus():Le.querySelector('[data-tag-index="'.concat(e,'"]')).focus()}));i.useEffect((function(){le&&Me>We.length-1&&(ze(-1),st(-1))}),[We,le,Me,st]);var ut=(0,f.Z)((function(e){var t=e.event,n=e.index,o=e.reason,r=void 0===o?"auto":o;if(Fe.current=n,-1===n?ke.current.removeAttribute("aria-activedescendant"):ke.current.setAttribute("aria-activedescendant","".concat(Se,"-option-").concat(n)),ue&&ue(t,-1===n?null:it[n],r),Ce.current){var a=Ce.current.querySelector('[role="option"].'.concat(l,"-focused"));a&&(a.classList.remove("".concat(l,"-focused")),a.classList.remove("".concat(l,"-focusVisible")));var i=Ce.current;if("listbox"!==Ce.current.getAttribute("role")&&(i=Ce.current.parentElement.querySelector('[role="listbox"]')),i)if(-1!==n){var c=Ce.current.querySelector('[data-option-index="'.concat(n,'"]'));if(c&&(c.classList.add("".concat(l,"-focused")),"keyboard"===r&&c.classList.add("".concat(l,"-focusVisible")),i.scrollHeight>i.clientHeight&&"mouse"!==r)){var s=c,u=i.clientHeight+i.scrollTop,p=s.offsetTop+s.offsetHeight;p>u?i.scrollTop=p-i.clientHeight:s.offsetTop-s.offsetHeight*(X?1.3:0)1?0:e:t>e?t===e+1&&ne?-1:q||Math.abs(o)>1?e:0:t}(),a);if(ut({index:c,reason:l,event:n}),g&&"reset"!==o)if(-1===c)ke.current.value=Ve;else{var s=t(it[c]);ke.current.value=s,0===s.toLowerCase().indexOf(Ve.toLowerCase())&&Ve.length>0&&ke.current.setSelectionRange(Ve.length,s.length)}}})),dt=i.useCallback((function(){if(at&&!function(){var e,n;if(-1!==Fe.current&<.filteredOptions&<.filteredOptions.length!==it.length&<.inputValue===Ve&&(le?We.length===lt.value.length&<.value.every((function(e,n){return t(We[n])===t(e)})):(e=lt.value,n=We,(e?t(e):"")===(n?t(n):"")))){var o=lt.filteredOptions[Fe.current];if(o&&it.some((function(e){return t(e)===t(o)})))return!0}return!1}()){var e=le?We[0]:We;if(0!==it.length&&null!=e){if(Ce.current)if(null==e)Fe.current>=it.length-1?ut({index:it.length-1}):ut({index:Fe.current});else{var n=it[Fe.current];if(le&&n&&-1!==m(We,(function(e){return ae(n,e)})))return;var o=m(it,(function(t){return ae(t,e)}));-1===o?pt({diff:"reset"}):ut({index:o})}}else pt({diff:"reset"})}}),[it.length,!le&&We,G,pt,ut,at,Ve,le]),ft=(0,f.Z)((function(e){(0,v.Z)(Ce,e),e&&dt()}));i.useEffect((function(){dt()}),[dt]);var vt=function(e){Ye||($e(!0),ot(!0),de&&de(e))},gt=function(e,t){Ye&&($e(!1),se&&se(e,t))},mt=function(e,t,n,o){if(le){if(We.length===t.length&&We.every((function(e,n){return e===t[n]})))return}else if(We===t)return;ce&&ce(e,t,n,o),je(t)},ht=i.useRef(!1),bt=function(e,t){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"options",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"selectOption",r=t;if(le){var a=m(r=Array.isArray(We)?We.slice():[],(function(e){return ae(t,e)}));-1===a?r.push(t):"freeSolo"!==n&&(r.splice(a,1),o="removeOption")}Je(e,r),mt(e,r,o,{option:t}),F||e&&(e.ctrlKey||e.metaKey)||gt(e,o),(!0===I||"touch"===I&&ht.current||"mouse"===I&&!ht.current)&&ke.current.blur()};var Zt=function(e,t){if(le){""===Ve&>(e,"toggleInput");var n=Me;-1===Me?""===Ve&&"previous"===t&&(n=We.length-1):((n+="next"===t?1:-1)<0&&(n=0),n===We.length&&(n=-1)),n=function(e,t){if(-1===e)return-1;for(var n=e;;){if("next"===t&&n===We.length||"previous"===t&&-1===n)return-1;var o=Le.querySelector('[data-tag-index="'.concat(n,'"]'));if(o&&o.hasAttribute("tabindex")&&!o.disabled&&"true"!==o.getAttribute("aria-disabled"))return n;n+="next"===t?1:-1}}(n,t),ze(n),st(n)}},xt=function(e){Oe.current=!0,Be(""),pe&&pe(e,"","clear"),mt(e,le?[]:null,"clear")},yt=function(e){return function(t){if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1!==Me&&-1===["ArrowLeft","ArrowRight"].indexOf(t.key)&&(ze(-1),st(-1)),229!==t.which))switch(t.key){case"Home":at&&$&&(t.preventDefault(),pt({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":at&&$&&(t.preventDefault(),pt({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),pt({diff:-5,direction:"previous",reason:"keyboard",event:t}),vt(t);break;case"PageDown":t.preventDefault(),pt({diff:5,direction:"next",reason:"keyboard",event:t}),vt(t);break;case"ArrowDown":t.preventDefault(),pt({diff:1,direction:"next",reason:"keyboard",event:t}),vt(t);break;case"ArrowUp":t.preventDefault(),pt({diff:-1,direction:"previous",reason:"keyboard",event:t}),vt(t);break;case"ArrowLeft":Zt(t,"previous");break;case"ArrowRight":Zt(t,"next");break;case"Enter":if(-1!==Fe.current&&at){var n=it[Fe.current],o=!!_&&_(n);if(t.preventDefault(),o)return;bt(t,n,"selectOption"),g&&ke.current.setSelectionRange(ke.current.value.length,ke.current.value.length)}else U&&""!==Ve&&!1===rt&&(le&&t.preventDefault(),bt(t,Ve,"createOption","freeSolo"));break;case"Escape":at?(t.preventDefault(),t.stopPropagation(),gt(t,"escape")):w&&(""!==Ve||le&&We.length>0)&&(t.preventDefault(),t.stopPropagation(),xt(t));break;case"Backspace":if(le&&!be&&""===Ve&&We.length>0){var r=-1===Me?We.length-1:Me,a=We.slice();a.splice(r,1),mt(t,a,"removeOption",{option:We[r]})}break;case"Delete":if(le&&!be&&""===Ve&&We.length>0&&-1!==Me){var i=Me,l=We.slice();l.splice(i,1),mt(t,l,"removeOption",{option:We[i]})}}}},St=function(e){_e(!0),ge&&!Oe.current&&vt(e)},Ot=function(e){o(Ce)?ke.current.focus():(_e(!1),Ie.current=!0,Oe.current=!1,S&&-1!==Fe.current&&at?bt(e,it[Fe.current],"blur"):S&&U&&""!==Ve?bt(e,Ve,"blur","freeSolo"):C&&Je(e,We),gt(e,"blur"))},It=function(e){var t=e.target.value;Ve!==t&&(Be(t),ot(!1),pe&&pe(e,t,"input")),""===t?z||le||mt(e,null,"clear"):vt(e)},kt=function(e){var t=Number(e.currentTarget.getAttribute("data-option-index"));Fe.current!==t&&ut({event:e,index:t,reason:"mouse"})},Ct=function(e){ut({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),ht.current=!0},Pt=function(e){var t=Number(e.currentTarget.getAttribute("data-option-index"));bt(e,it[t],"selectOption"),ht.current=!1},wt=function(e){return function(t){var n=We.slice();n.splice(e,1),mt(t,n,"removeOption",{option:We[e]})}},Lt=function(e){Ye?gt(e,"toggleInput"):vt(e)},At=function(e){e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==Se&&e.preventDefault()},Rt=function(e){e.currentTarget.contains(e.target)&&(ke.current.focus(),xe&&Ie.current&&ke.current.selectionEnd-ke.current.selectionStart===0&&ke.current.select(),Ie.current=!1)},Tt=function(e){""!==Ve&&Ye||Lt(e)},Mt=U&&Ve.length>0;Mt=Mt||(le?We.length>0:null!==We);var zt=it;if(X){new Map;zt=it.reduce((function(e,t,n){var o=X(t);return e.length>0&&e[e.length-1].group===o?e[e.length-1].options.push(t):e.push({key:n,index:n,group:o,options:[t]}),e}),[])}return D&&Ue&&Ot(),{getRootProps:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.Z)({"aria-owns":ct?"".concat(Se,"-listbox"):null},e,{onKeyDown:yt(e),onMouseDown:At,onClick:Rt})},getInputLabelProps:function(){return{id:"".concat(Se,"-label"),htmlFor:Se}},getInputProps:function(){return{id:Se,value:Ve,onBlur:Ot,onFocus:St,onChange:It,onMouseDown:Tt,"aria-activedescendant":at?"":null,"aria-autocomplete":g?"both":"list","aria-controls":ct?"".concat(Se,"-listbox"):void 0,"aria-expanded":ct,autoComplete:"off",ref:ke,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:D}},getClearProps:function(){return{tabIndex:-1,onClick:xt}},getPopupIndicatorProps:function(){return{tabIndex:-1,onClick:Lt}},getTagProps:function(e){var t=e.index;return(0,a.Z)({key:t,"data-tag-index":t,tabIndex:-1},!be&&{onDelete:wt(t)})},getListboxProps:function(){return{role:"listbox",id:"".concat(Se,"-listbox"),"aria-labelledby":"".concat(Se,"-label"),ref:ft,onMouseDown:function(e){e.preventDefault()}}},getOptionProps:function(e){var n=e.index,o=e.option,r=(le?We:[We]).some((function(e){return null!=e&&ae(o,e)})),a=!!_&&_(o);return{key:t(o),tabIndex:-1,role:"option",id:"".concat(Se,"-option-").concat(n),onMouseMove:kt,onClick:Pt,onTouchStart:Ct,"data-option-index":n,"aria-disabled":a,"aria-selected":r}},id:Se,inputValue:Ve,value:We,dirty:Mt,expanded:at&&Le,popupOpen:at,focused:Ue||-1!==Me,anchorEl:Le,setAnchorEl:Ae,focusedTag:Me,groupedOptions:zt}}var x=n(12065),y=n(41),S=n(79834),O=n(35527),I=n(13400),k=n(81918),C=n(86779),P=n(55891),w=n(56059),L=n(96285),A=n(76189),R=n(80184),T=(0,A.Z)((0,R.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),M=n(89059),z=n(31402),N=n(66934),F=n(75878),D=n(21217);function E(e){return(0,D.Z)("MuiAutocomplete",e)}var W,j,q=(0,F.Z)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]),H=n(14036),V=n(42071),B=["autoComplete","autoHighlight","autoSelect","blurOnSelect","ChipProps","className","clearIcon","clearOnBlur","clearOnEscape","clearText","closeText","componentsProps","defaultValue","disableClearable","disableCloseOnSelect","disabled","disabledItemsFocusable","disableListWrap","disablePortal","filterOptions","filterSelectedOptions","forcePopupIcon","freeSolo","fullWidth","getLimitTagsText","getOptionDisabled","getOptionLabel","isOptionEqualToValue","groupBy","handleHomeEndKeys","id","includeInputInList","inputValue","limitTags","ListboxComponent","ListboxProps","loading","loadingText","multiple","noOptionsText","onChange","onClose","onHighlightChange","onInputChange","onOpen","open","openOnFocus","openText","options","PaperComponent","PopperComponent","popupIcon","readOnly","renderGroup","renderInput","renderOption","renderTags","selectOnFocus","size","slotProps","value"],G=["ref"],K=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState,r=n.fullWidth,a=n.hasClearIcon,i=n.hasPopupIcon,l=n.inputFocused,c=n.size;return[(0,o.Z)({},"& .".concat(q.tag),t.tag),(0,o.Z)({},"& .".concat(q.tag),t["tagSize".concat((0,H.Z)(c))]),(0,o.Z)({},"& .".concat(q.inputRoot),t.inputRoot),(0,o.Z)({},"& .".concat(q.input),t.input),(0,o.Z)({},"& .".concat(q.input),l&&t.inputFocused),t.root,r&&t.fullWidth,i&&t.hasPopupIcon,a&&t.hasClearIcon]}})((function(e){var t,n,r,i,l,c=e.ownerState;return(0,a.Z)((t={},(0,o.Z)(t,"&.".concat(q.focused," .").concat(q.clearIndicator),{visibility:"visible"}),(0,o.Z)(t,"@media (pointer: fine)",(0,o.Z)({},"&:hover .".concat(q.clearIndicator),{visibility:"visible"})),t),c.fullWidth&&{width:"100%"},(l={},(0,o.Z)(l,"& .".concat(q.tag),(0,a.Z)({margin:3,maxWidth:"calc(100% - 6px)"},"small"===c.size&&{margin:2,maxWidth:"calc(100% - 4px)"})),(0,o.Z)(l,"& .".concat(q.inputRoot),(n={flexWrap:"wrap"},(0,o.Z)(n,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:30}),(0,o.Z)(n,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:56}),(0,o.Z)(n,"& .".concat(q.input),{width:0,minWidth:30}),n)),(0,o.Z)(l,"& .".concat(C.Z.root),{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}}),(0,o.Z)(l,"& .".concat(C.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({},"& .".concat(C.Z.input),{padding:"2px 4px 3px 0"})),(0,o.Z)(l,"& .".concat(w.Z.root),(r={padding:9},(0,o.Z)(r,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:39}),(0,o.Z)(r,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:65}),(0,o.Z)(r,"& .".concat(q.input),{padding:"7.5px 4px 7.5px 5px"}),(0,o.Z)(r,"& .".concat(q.endAdornment),{right:9}),r)),(0,o.Z)(l,"& .".concat(w.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({paddingTop:6,paddingBottom:6,paddingLeft:6},"& .".concat(q.input),{padding:"2.5px 4px 2.5px 8px"})),(0,o.Z)(l,"& .".concat(L.Z.root),(i={paddingTop:19,paddingLeft:8},(0,o.Z)(i,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:39}),(0,o.Z)(i,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:65}),(0,o.Z)(i,"& .".concat(L.Z.input),{padding:"7px 4px"}),(0,o.Z)(i,"& .".concat(q.endAdornment),{right:9}),i)),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({paddingBottom:1},"& .".concat(L.Z.input),{padding:"2.5px 4px"})),(0,o.Z)(l,"& .".concat(P.Z.hiddenLabel),{paddingTop:8}),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.hiddenLabel),(0,o.Z)({paddingTop:0,paddingBottom:0},"& .".concat(q.input),{paddingTop:16,paddingBottom:17})),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.hiddenLabel,".").concat(P.Z.sizeSmall),(0,o.Z)({},"& .".concat(q.input),{paddingTop:8,paddingBottom:9})),(0,o.Z)(l,"& .".concat(q.input),(0,a.Z)({flexGrow:1,textOverflow:"ellipsis",opacity:0},c.inputFocused&&{opacity:1})),l))})),U=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:function(e,t){return t.endAdornment}})({position:"absolute",right:0,top:"calc(50% - 14px)"}),_=(0,N.ZP)(I.Z,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:function(e,t){return t.clearIndicator}})({marginRight:-2,padding:4,visibility:"hidden"}),J=(0,N.ZP)(I.Z,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:function(e,t){var n=e.ownerState;return(0,a.Z)({},t.popupIndicator,n.popupOpen&&t.popupIndicatorOpen)}})((function(e){var t=e.ownerState;return(0,a.Z)({padding:2,marginRight:-2},t.popupOpen&&{transform:"rotate(180deg)"})})),Q=(0,N.ZP)(y.Z,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:function(e,t){var n=e.ownerState;return[(0,o.Z)({},"& .".concat(q.option),t.option),t.popper,n.disablePortal&&t.popperDisablePortal]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({zIndex:(t.vars||t).zIndex.modal},n.disablePortal&&{position:"absolute"})})),X=(0,N.ZP)(O.Z,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:function(e,t){return t.paper}})((function(e){var t=e.theme;return(0,a.Z)({},t.typography.body1,{overflow:"auto"})})),Y=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:function(e,t){return t.loading}})((function(e){var t=e.theme;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),$=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:function(e,t){return t.noOptions}})((function(e){var t=e.theme;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),ee=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:function(e,t){return t.listbox}})((function(e){var t,n,r=e.theme;return(0,o.Z)({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative"},"& .".concat(q.option),(n={minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16},(0,o.Z)(n,r.breakpoints.up("sm"),{minHeight:"auto"}),(0,o.Z)(n,"&.".concat(q.focused),{backgroundColor:(r.vars||r).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}),(0,o.Z)(n,'&[aria-disabled="true"]',{opacity:(r.vars||r).palette.action.disabledOpacity,pointerEvents:"none"}),(0,o.Z)(n,"&.".concat(q.focusVisible),{backgroundColor:(r.vars||r).palette.action.focus}),(0,o.Z)(n,'&[aria-selected="true"]',(t={backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / ").concat(r.vars.palette.action.selectedOpacity,")"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity)},(0,o.Z)(t,"&.".concat(q.focused),{backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / calc(").concat(r.vars.palette.action.selectedOpacity," + ").concat(r.vars.palette.action.hoverOpacity,"))"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity+r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(r.vars||r).palette.action.selected}}),(0,o.Z)(t,"&.".concat(q.focusVisible),{backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / calc(").concat(r.vars.palette.action.selectedOpacity," + ").concat(r.vars.palette.action.focusOpacity,"))"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity+r.palette.action.focusOpacity)}),t)),n))})),te=(0,N.ZP)(S.Z,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:function(e,t){return t.groupLabel}})((function(e){var t=e.theme;return{backgroundColor:(t.vars||t).palette.background.paper,top:-8}})),ne=(0,N.ZP)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:function(e,t){return t.groupUl}})((0,o.Z)({padding:0},"& .".concat(q.option),{paddingLeft:24})),oe=i.forwardRef((function(e,t){var n,o,s,u,p,d=(0,z.Z)({props:e,name:"MuiAutocomplete"}),f=(d.autoComplete,d.autoHighlight,d.autoSelect,d.blurOnSelect,d.ChipProps),v=d.className,g=d.clearIcon,m=void 0===g?W||(W=(0,R.jsx)(T,{fontSize:"small"})):g,h=d.clearOnBlur,b=(void 0===h&&d.freeSolo,d.clearOnEscape,d.clearText),x=void 0===b?"Clear":b,S=d.closeText,I=void 0===S?"Close":S,C=d.componentsProps,P=void 0===C?{}:C,w=d.defaultValue,L=(void 0===w&&d.multiple,d.disableClearable),A=void 0!==L&&L,N=(d.disableCloseOnSelect,d.disabled),F=void 0!==N&&N,D=(d.disabledItemsFocusable,d.disableListWrap,d.disablePortal),q=void 0!==D&&D,oe=(d.filterSelectedOptions,d.forcePopupIcon),re=void 0===oe?"auto":oe,ae=d.freeSolo,ie=void 0!==ae&&ae,le=d.fullWidth,ce=void 0!==le&&le,se=d.getLimitTagsText,ue=void 0===se?function(e){return"+".concat(e)}:se,pe=d.getOptionLabel,de=void 0===pe?function(e){var t;return null!=(t=e.label)?t:e}:pe,fe=d.groupBy,ve=d.handleHomeEndKeys,ge=(void 0===ve&&d.freeSolo,d.includeInputInList,d.limitTags),me=void 0===ge?-1:ge,he=d.ListboxComponent,be=void 0===he?"ul":he,Ze=d.ListboxProps,xe=d.loading,ye=void 0!==xe&&xe,Se=d.loadingText,Oe=void 0===Se?"Loading\u2026":Se,Ie=d.multiple,ke=void 0!==Ie&&Ie,Ce=d.noOptionsText,Pe=void 0===Ce?"No options":Ce,we=(d.openOnFocus,d.openText),Le=void 0===we?"Open":we,Ae=d.PaperComponent,Re=void 0===Ae?O.Z:Ae,Te=d.PopperComponent,Me=void 0===Te?y.Z:Te,ze=d.popupIcon,Ne=void 0===ze?j||(j=(0,R.jsx)(M.Z,{})):ze,Fe=d.readOnly,De=void 0!==Fe&&Fe,Ee=d.renderGroup,We=d.renderInput,je=d.renderOption,qe=d.renderTags,He=d.selectOnFocus,Ve=(void 0===He&&d.freeSolo,d.size),Be=void 0===Ve?"medium":Ve,Ge=d.slotProps,Ke=void 0===Ge?{}:Ge,Ue=(0,r.Z)(d,B),_e=Z((0,a.Z)({},d,{componentName:"Autocomplete"})),Je=_e.getRootProps,Qe=_e.getInputProps,Xe=_e.getInputLabelProps,Ye=_e.getPopupIndicatorProps,$e=_e.getClearProps,et=_e.getTagProps,tt=_e.getListboxProps,nt=_e.getOptionProps,ot=_e.value,rt=_e.dirty,at=_e.expanded,it=_e.id,lt=_e.popupOpen,ct=_e.focused,st=_e.focusedTag,ut=_e.anchorEl,pt=_e.setAnchorEl,dt=_e.inputValue,ft=_e.groupedOptions,vt=!A&&!F&&rt&&!De,gt=(!ie||!0===re)&&!1!==re,mt=Qe().onMouseDown,ht=(null!=Ze?Ze:{}).ref,bt=tt(),Zt=bt.ref,xt=(0,r.Z)(bt,G),yt=(0,V.Z)(Zt,ht),St=(0,a.Z)({},d,{disablePortal:q,expanded:at,focused:ct,fullWidth:ce,hasClearIcon:vt,hasPopupIcon:gt,inputFocused:-1===st,popupOpen:lt,size:Be}),Ot=function(e){var t=e.classes,n=e.disablePortal,o=e.expanded,r=e.focused,a=e.fullWidth,i=e.hasClearIcon,l=e.hasPopupIcon,s=e.inputFocused,u=e.popupOpen,p=e.size,d={root:["root",o&&"expanded",r&&"focused",a&&"fullWidth",i&&"hasClearIcon",l&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",s&&"inputFocused"],tag:["tag","tagSize".concat((0,H.Z)(p))],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",u&&"popupIndicatorOpen"],popper:["popper",n&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,c.Z)(d,E,t)}(St);if(ke&&ot.length>0){var It=function(e){return(0,a.Z)({className:Ot.tag,disabled:F},et(e))};p=qe?qe(ot,It,St):ot.map((function(e,t){return(0,R.jsx)(k.Z,(0,a.Z)({label:de(e),size:Be},It({index:t}),f))}))}if(me>-1&&Array.isArray(p)){var kt=p.length-me;!ct&&kt>0&&(p=p.splice(0,me)).push((0,R.jsx)("span",{className:Ot.tag,children:ue(kt)},p.length))}var Ct=Ee||function(e){return(0,R.jsxs)("li",{children:[(0,R.jsx)(te,{className:Ot.groupLabel,ownerState:St,component:"div",children:e.group}),(0,R.jsx)(ne,{className:Ot.groupUl,ownerState:St,children:e.children})]},e.key)},Pt=je||function(e,t){return(0,R.jsx)("li",(0,a.Z)({},e,{children:de(t)}))},wt=function(e,t){var n=nt({option:e,index:t});return Pt((0,a.Z)({},n,{className:Ot.option}),e,{selected:n["aria-selected"],index:t,inputValue:dt})},Lt=null!=(n=Ke.clearIndicator)?n:P.clearIndicator,At=null!=(o=Ke.paper)?o:P.paper,Rt=null!=(s=Ke.popper)?s:P.popper,Tt=null!=(u=Ke.popupIndicator)?u:P.popupIndicator;return(0,R.jsxs)(i.Fragment,{children:[(0,R.jsx)(K,(0,a.Z)({ref:t,className:(0,l.Z)(Ot.root,v),ownerState:St},Je(Ue),{children:We({id:it,disabled:F,fullWidth:!0,size:"small"===Be?"small":void 0,InputLabelProps:Xe(),InputProps:(0,a.Z)({ref:pt,className:Ot.inputRoot,startAdornment:p,onClick:function(e){e.target===e.currentTarget&&mt(e)}},(vt||gt)&&{endAdornment:(0,R.jsxs)(U,{className:Ot.endAdornment,ownerState:St,children:[vt?(0,R.jsx)(_,(0,a.Z)({},$e(),{"aria-label":x,title:x,ownerState:St},Lt,{className:(0,l.Z)(Ot.clearIndicator,null==Lt?void 0:Lt.className),children:m})):null,gt?(0,R.jsx)(J,(0,a.Z)({},Ye(),{disabled:F,"aria-label":lt?I:Le,title:lt?I:Le,ownerState:St},Tt,{className:(0,l.Z)(Ot.popupIndicator,null==Tt?void 0:Tt.className),children:Ne})):null]})}),inputProps:(0,a.Z)({className:Ot.input,disabled:F,readOnly:De},Qe())})})),ut?(0,R.jsx)(Q,(0,a.Z)({as:Me,disablePortal:q,style:{width:ut?ut.clientWidth:null},ownerState:St,role:"presentation",anchorEl:ut,open:lt},Rt,{className:(0,l.Z)(Ot.popper,null==Rt?void 0:Rt.className),children:(0,R.jsxs)(X,(0,a.Z)({ownerState:St,as:Re},At,{className:(0,l.Z)(Ot.paper,null==At?void 0:At.className),children:[ye&&0===ft.length?(0,R.jsx)(Y,{className:Ot.loading,ownerState:St,children:Oe}):null,0!==ft.length||ie||ye?null:(0,R.jsx)($,{className:Ot.noOptions,ownerState:St,role:"presentation",onMouseDown:function(e){e.preventDefault()},children:Pe}),ft.length>0?(0,R.jsx)(ee,(0,a.Z)({as:be,className:Ot.listbox,ownerState:St},xt,Ze,{ref:yt,children:ft.map((function(e,t){return fe?Ct({key:e.key,group:e.group,children:e.options.map((function(t,n){return wt(t,e.index+n)}))}):wt(e,t)}))})):null]}))})):null]})}))},93840:function(e,t,n){var o=n(72791).createContext(void 0);t.Z=o},76147:function(e,t,n){function o(e){var t=e.props,n=e.states,o=e.muiFormControl;return n.reduce((function(e,n){return e[n]=t[n],o&&"undefined"===typeof t[n]&&(e[n]=o[n]),e}),{})}n.d(t,{Z:function(){return o}})},52930:function(e,t,n){n.d(t,{Z:function(){return a}});var o=n(72791),r=n(93840);function a(){return o.useContext(r.Z)}},17133:function(e,t,n){var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(28182),c=n(94419),s=n(76147),u=n(52930),p=n(14036),d=n(31402),f=n(66934),v=n(10843),g=n(80184),m=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return(0,a.Z)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,a.Z)({color:(n.vars||n).palette.text.secondary},n.typography.body1,(t={lineHeight:"1.4375em",padding:0,position:"relative"},(0,o.Z)(t,"&.".concat(v.Z.focused),{color:(n.vars||n).palette[r.color].main}),(0,o.Z)(t,"&.".concat(v.Z.disabled),{color:(n.vars||n).palette.text.disabled}),(0,o.Z)(t,"&.".concat(v.Z.error),{color:(n.vars||n).palette.error.main}),t))})),b=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,t){return t.asterisk}})((function(e){var t=e.theme;return(0,o.Z)({},"&.".concat(v.Z.error),{color:(t.vars||t).palette.error.main})})),Z=i.forwardRef((function(e,t){var n=(0,d.Z)({props:e,name:"MuiFormLabel"}),o=n.children,i=n.className,f=n.component,Z=void 0===f?"label":f,x=(0,r.Z)(n,m),y=(0,u.Z)(),S=(0,s.Z)({props:n,muiFormControl:y,states:["color","required","focused","disabled","error","filled"]}),O=(0,a.Z)({},n,{color:S.color||"primary",component:Z,disabled:S.disabled,error:S.error,filled:S.filled,focused:S.focused,required:S.required}),I=function(e){var t=e.classes,n=e.color,o=e.focused,r=e.disabled,a=e.error,i=e.filled,l=e.required,s={root:["root","color".concat((0,p.Z)(n)),r&&"disabled",a&&"error",i&&"filled",o&&"focused",l&&"required"],asterisk:["asterisk",a&&"error"]};return(0,c.Z)(s,v.M,t)}(O);return(0,g.jsxs)(h,(0,a.Z)({as:Z,ownerState:O,className:(0,l.Z)(I.root,i),ref:t},x,{children:[o,S.required&&(0,g.jsxs)(b,{ownerState:O,"aria-hidden":!0,className:I.asterisk,children:["\u2009","*"]})]}))}));t.Z=Z},10843:function(e,t,n){n.d(t,{M:function(){return a}});var o=n(75878),r=n(21217);function a(e){return(0,r.Z)("MuiFormLabel",e)}var i=(0,o.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);t.Z=i},30829:function(e,t,n){n.d(t,{Z:function(){return y}});var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(94419),c=n(28182),s=n(76147),u=n(52930),p=n(17133),d=n(10843),f=n(31402),v=n(66934),g=n(75878),m=n(21217);function h(e){return(0,m.Z)("MuiInputLabel",e)}(0,g.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var b=n(80184),Z=["disableAnimation","margin","shrink","variant","className"],x=(0,v.ZP)(p.Z,{shouldForwardProp:function(e){return(0,v.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,o.Z)({},"& .".concat(d.Z.asterisk),t.asterisk),t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,t[n.variant]]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),y=i.forwardRef((function(e,t){var n=(0,f.Z)({name:"MuiInputLabel",props:e}),o=n.disableAnimation,i=void 0!==o&&o,p=n.shrink,d=n.className,v=(0,r.Z)(n,Z),g=(0,u.Z)(),m=p;"undefined"===typeof m&&g&&(m=g.filled||g.focused||g.adornedStart);var y=(0,s.Z)({props:n,muiFormControl:g,states:["size","variant","required"]}),S=(0,a.Z)({},n,{disableAnimation:i,formControl:g,shrink:m,size:y.size,variant:y.variant,required:y.required}),O=function(e){var t=e.classes,n=e.formControl,o=e.size,r=e.shrink,i={root:["root",n&&"formControl",!e.disableAnimation&&"animated",r&&"shrink","small"===o&&"sizeSmall",e.variant],asterisk:[e.required&&"asterisk"]},c=(0,l.Z)(i,h,t);return(0,a.Z)({},t,c)}(S);return(0,b.jsx)(x,(0,a.Z)({"data-shrink":m,ownerState:S,ref:t,className:(0,c.Z)(O.root,d)},v,{classes:O}))}))},79834:function(e,t,n){n.d(t,{Z:function(){return b}});var o=n(63366),r=n(87462),a=n(72791),i=n(28182),l=n(94419),c=n(66934),s=n(31402),u=n(14036),p=n(75878),d=n(21217);function f(e){return(0,d.Z)("MuiListSubheader",e)}(0,p.Z)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var v=n(80184),g=["className","color","component","disableGutters","disableSticky","inset"],m=(0,c.ZP)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,"default"!==n.color&&t["color".concat((0,u.Z)(n.color))],!n.disableGutters&&t.gutters,n.inset&&t.inset,!n.disableSticky&&t.sticky]}})((function(e){var t=e.theme,n=e.ownerState;return(0,r.Z)({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(t.vars||t).palette.text.secondary,fontFamily:t.typography.fontFamily,fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.pxToRem(14)},"primary"===n.color&&{color:(t.vars||t).palette.primary.main},"inherit"===n.color&&{color:"inherit"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.inset&&{paddingLeft:72},!n.disableSticky&&{position:"sticky",top:0,zIndex:1,backgroundColor:(t.vars||t).palette.background.paper})})),h=a.forwardRef((function(e,t){var n=(0,s.Z)({props:e,name:"MuiListSubheader"}),a=n.className,c=n.color,p=void 0===c?"default":c,d=n.component,h=void 0===d?"li":d,b=n.disableGutters,Z=void 0!==b&&b,x=n.disableSticky,y=void 0!==x&&x,S=n.inset,O=void 0!==S&&S,I=(0,o.Z)(n,g),k=(0,r.Z)({},n,{color:p,component:h,disableGutters:Z,disableSticky:y,inset:O}),C=function(e){var t=e.classes,n=e.color,o=e.disableGutters,r=e.inset,a=e.disableSticky,i={root:["root","default"!==n&&"color".concat((0,u.Z)(n)),!o&&"gutters",r&&"inset",!a&&"sticky"]};return(0,l.Z)(i,f,t)}(k);return(0,v.jsx)(m,(0,r.Z)({as:h,className:(0,i.Z)(C.root,a),ref:t,ownerState:k},I))}));h.muiSkipListHighlight=!0;var b=h},36229:function(e,t,n){var o=n(72791);t.Z=function(e){var t=o.useRef({});return o.useEffect((function(){t.current=e})),t.current}}}]);
-//# sourceMappingURL=2260.71dd3e05.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2260],{67252:function(e,t,n){n.d(t,{Z:function(){return oe}});var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(28182),c=n(94419),s=n(29439),u=n(18252),p=n(88637),d=n(36229),f=n(97054),v=n(62971);function g(e){return"undefined"!==typeof e.normalize?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e}function m(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=e.ignoreAccents,n=void 0===t||t,o=e.ignoreCase,r=void 0===o||o,a=e.limit,i=e.matchFrom,l=void 0===i?"any":i,c=e.stringify,s=e.trim,u=void 0!==s&&s;return function(e,t){var o=t.inputValue,i=t.getOptionLabel,s=u?o.trim():o;r&&(s=s.toLowerCase()),n&&(s=g(s));var p=s?e.filter((function(e){var t=(c||i)(e);return r&&(t=t.toLowerCase()),n&&(t=g(t)),"start"===l?0===t.indexOf(s):t.indexOf(s)>-1})):e;return"number"===typeof a?p.slice(0,a):p}}(),b=function(e){var t;return null!==e.current&&(null==(t=e.current.parentElement)?void 0:t.contains(document.activeElement))};function Z(e){var t,n=e.unstable_isActiveElementInListbox,o=void 0===n?b:n,r=e.unstable_classNamePrefix,l=void 0===r?"Mui":r,c=e.autoComplete,g=void 0!==c&&c,Z=e.autoHighlight,x=void 0!==Z&&Z,y=e.autoSelect,S=void 0!==y&&y,O=e.blurOnSelect,I=void 0!==O&&O,k=e.clearOnBlur,C=void 0===k?!e.freeSolo:k,P=e.clearOnEscape,w=void 0!==P&&P,L=e.componentName,A=void 0===L?"useAutocomplete":L,R=e.defaultValue,T=void 0===R?e.multiple?[]:null:R,M=e.disableClearable,z=void 0!==M&&M,N=e.disableCloseOnSelect,F=void 0!==N&&N,D=e.disabled,E=e.disabledItemsFocusable,W=void 0!==E&&E,j=e.disableListWrap,q=void 0!==j&&j,H=e.filterOptions,V=void 0===H?h:H,B=e.filterSelectedOptions,G=void 0!==B&&B,K=e.freeSolo,U=void 0!==K&&K,_=e.getOptionDisabled,J=e.getOptionLabel,Q=void 0===J?function(e){var t;return null!=(t=e.label)?t:e}:J,X=e.groupBy,Y=e.handleHomeEndKeys,$=void 0===Y?!e.freeSolo:Y,ee=e.id,te=e.includeInputInList,ne=void 0!==te&&te,oe=e.inputValue,re=e.isOptionEqualToValue,ae=void 0===re?function(e,t){return e===t}:re,ie=e.multiple,le=void 0!==ie&&ie,ce=e.onChange,se=e.onClose,ue=e.onHighlightChange,pe=e.onInputChange,de=e.onOpen,fe=e.open,ve=e.openOnFocus,ge=void 0!==ve&&ve,me=e.options,he=e.readOnly,be=void 0!==he&&he,Ze=e.selectOnFocus,xe=void 0===Ze?!e.freeSolo:Ze,ye=e.value,Se=(0,u.Z)(ee);t=function(e){var t=Q(e);return"string"!==typeof t?String(t):t};var Oe=i.useRef(!1),Ie=i.useRef(!0),ke=i.useRef(null),Ce=i.useRef(null),Pe=i.useState(null),we=(0,s.Z)(Pe,2),Le=we[0],Ae=we[1],Re=i.useState(-1),Te=(0,s.Z)(Re,2),Me=Te[0],ze=Te[1],Ne=x?0:-1,Fe=i.useRef(Ne),De=(0,p.Z)({controlled:ye,default:T,name:A}),Ee=(0,s.Z)(De,2),We=Ee[0],je=Ee[1],qe=(0,p.Z)({controlled:oe,default:"",name:A,state:"inputValue"}),He=(0,s.Z)(qe,2),Ve=He[0],Be=He[1],Ge=i.useState(!1),Ke=(0,s.Z)(Ge,2),Ue=Ke[0],_e=Ke[1],Je=i.useCallback((function(e,n){if((le?We.length0&&!be,st=(0,f.Z)((function(e){-1===e?ke.current.focus():Le.querySelector('[data-tag-index="'.concat(e,'"]')).focus()}));i.useEffect((function(){le&&Me>We.length-1&&(ze(-1),st(-1))}),[We,le,Me,st]);var ut=(0,f.Z)((function(e){var t=e.event,n=e.index,o=e.reason,r=void 0===o?"auto":o;if(Fe.current=n,-1===n?ke.current.removeAttribute("aria-activedescendant"):ke.current.setAttribute("aria-activedescendant","".concat(Se,"-option-").concat(n)),ue&&ue(t,-1===n?null:it[n],r),Ce.current){var a=Ce.current.querySelector('[role="option"].'.concat(l,"-focused"));a&&(a.classList.remove("".concat(l,"-focused")),a.classList.remove("".concat(l,"-focusVisible")));var i=Ce.current;if("listbox"!==Ce.current.getAttribute("role")&&(i=Ce.current.parentElement.querySelector('[role="listbox"]')),i)if(-1!==n){var c=Ce.current.querySelector('[data-option-index="'.concat(n,'"]'));if(c&&(c.classList.add("".concat(l,"-focused")),"keyboard"===r&&c.classList.add("".concat(l,"-focusVisible")),i.scrollHeight>i.clientHeight&&"mouse"!==r)){var s=c,u=i.clientHeight+i.scrollTop,p=s.offsetTop+s.offsetHeight;p>u?i.scrollTop=p-i.clientHeight:s.offsetTop-s.offsetHeight*(X?1.3:0)1?0:e:t>e?t===e+1&&ne?-1:q||Math.abs(o)>1?e:0:t}(),a);if(ut({index:c,reason:l,event:n}),g&&"reset"!==o)if(-1===c)ke.current.value=Ve;else{var s=t(it[c]);ke.current.value=s,0===s.toLowerCase().indexOf(Ve.toLowerCase())&&Ve.length>0&&ke.current.setSelectionRange(Ve.length,s.length)}}})),dt=i.useCallback((function(){if(at&&!function(){var e,n;if(-1!==Fe.current&<.filteredOptions&<.filteredOptions.length!==it.length&<.inputValue===Ve&&(le?We.length===lt.value.length&<.value.every((function(e,n){return t(We[n])===t(e)})):(e=lt.value,n=We,(e?t(e):"")===(n?t(n):"")))){var o=lt.filteredOptions[Fe.current];if(o&&it.some((function(e){return t(e)===t(o)})))return!0}return!1}()){var e=le?We[0]:We;if(0!==it.length&&null!=e){if(Ce.current)if(null==e)Fe.current>=it.length-1?ut({index:it.length-1}):ut({index:Fe.current});else{var n=it[Fe.current];if(le&&n&&-1!==m(We,(function(e){return ae(n,e)})))return;var o=m(it,(function(t){return ae(t,e)}));-1===o?pt({diff:"reset"}):ut({index:o})}}else pt({diff:"reset"})}}),[it.length,!le&&We,G,pt,ut,at,Ve,le]),ft=(0,f.Z)((function(e){(0,v.Z)(Ce,e),e&&dt()}));i.useEffect((function(){dt()}),[dt]);var vt=function(e){Ye||($e(!0),ot(!0),de&&de(e))},gt=function(e,t){Ye&&($e(!1),se&&se(e,t))},mt=function(e,t,n,o){if(le){if(We.length===t.length&&We.every((function(e,n){return e===t[n]})))return}else if(We===t)return;ce&&ce(e,t,n,o),je(t)},ht=i.useRef(!1),bt=function(e,t){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"options",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"selectOption",r=t;if(le){var a=m(r=Array.isArray(We)?We.slice():[],(function(e){return ae(t,e)}));-1===a?r.push(t):"freeSolo"!==n&&(r.splice(a,1),o="removeOption")}Je(e,r),mt(e,r,o,{option:t}),F||e&&(e.ctrlKey||e.metaKey)||gt(e,o),(!0===I||"touch"===I&&ht.current||"mouse"===I&&!ht.current)&&ke.current.blur()};var Zt=function(e,t){if(le){""===Ve&>(e,"toggleInput");var n=Me;-1===Me?""===Ve&&"previous"===t&&(n=We.length-1):((n+="next"===t?1:-1)<0&&(n=0),n===We.length&&(n=-1)),n=function(e,t){if(-1===e)return-1;for(var n=e;;){if("next"===t&&n===We.length||"previous"===t&&-1===n)return-1;var o=Le.querySelector('[data-tag-index="'.concat(n,'"]'));if(o&&o.hasAttribute("tabindex")&&!o.disabled&&"true"!==o.getAttribute("aria-disabled"))return n;n+="next"===t?1:-1}}(n,t),ze(n),st(n)}},xt=function(e){Oe.current=!0,Be(""),pe&&pe(e,"","clear"),mt(e,le?[]:null,"clear")},yt=function(e){return function(t){if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1!==Me&&-1===["ArrowLeft","ArrowRight"].indexOf(t.key)&&(ze(-1),st(-1)),229!==t.which))switch(t.key){case"Home":at&&$&&(t.preventDefault(),pt({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":at&&$&&(t.preventDefault(),pt({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),pt({diff:-5,direction:"previous",reason:"keyboard",event:t}),vt(t);break;case"PageDown":t.preventDefault(),pt({diff:5,direction:"next",reason:"keyboard",event:t}),vt(t);break;case"ArrowDown":t.preventDefault(),pt({diff:1,direction:"next",reason:"keyboard",event:t}),vt(t);break;case"ArrowUp":t.preventDefault(),pt({diff:-1,direction:"previous",reason:"keyboard",event:t}),vt(t);break;case"ArrowLeft":Zt(t,"previous");break;case"ArrowRight":Zt(t,"next");break;case"Enter":if(-1!==Fe.current&&at){var n=it[Fe.current],o=!!_&&_(n);if(t.preventDefault(),o)return;bt(t,n,"selectOption"),g&&ke.current.setSelectionRange(ke.current.value.length,ke.current.value.length)}else U&&""!==Ve&&!1===rt&&(le&&t.preventDefault(),bt(t,Ve,"createOption","freeSolo"));break;case"Escape":at?(t.preventDefault(),t.stopPropagation(),gt(t,"escape")):w&&(""!==Ve||le&&We.length>0)&&(t.preventDefault(),t.stopPropagation(),xt(t));break;case"Backspace":if(le&&!be&&""===Ve&&We.length>0){var r=-1===Me?We.length-1:Me,a=We.slice();a.splice(r,1),mt(t,a,"removeOption",{option:We[r]})}break;case"Delete":if(le&&!be&&""===Ve&&We.length>0&&-1!==Me){var i=Me,l=We.slice();l.splice(i,1),mt(t,l,"removeOption",{option:We[i]})}}}},St=function(e){_e(!0),ge&&!Oe.current&&vt(e)},Ot=function(e){o(Ce)?ke.current.focus():(_e(!1),Ie.current=!0,Oe.current=!1,S&&-1!==Fe.current&&at?bt(e,it[Fe.current],"blur"):S&&U&&""!==Ve?bt(e,Ve,"blur","freeSolo"):C&&Je(e,We),gt(e,"blur"))},It=function(e){var t=e.target.value;Ve!==t&&(Be(t),ot(!1),pe&&pe(e,t,"input")),""===t?z||le||mt(e,null,"clear"):vt(e)},kt=function(e){var t=Number(e.currentTarget.getAttribute("data-option-index"));Fe.current!==t&&ut({event:e,index:t,reason:"mouse"})},Ct=function(e){ut({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),ht.current=!0},Pt=function(e){var t=Number(e.currentTarget.getAttribute("data-option-index"));bt(e,it[t],"selectOption"),ht.current=!1},wt=function(e){return function(t){var n=We.slice();n.splice(e,1),mt(t,n,"removeOption",{option:We[e]})}},Lt=function(e){Ye?gt(e,"toggleInput"):vt(e)},At=function(e){e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==Se&&e.preventDefault()},Rt=function(e){e.currentTarget.contains(e.target)&&(ke.current.focus(),xe&&Ie.current&&ke.current.selectionEnd-ke.current.selectionStart===0&&ke.current.select(),Ie.current=!1)},Tt=function(e){""!==Ve&&Ye||Lt(e)},Mt=U&&Ve.length>0;Mt=Mt||(le?We.length>0:null!==We);var zt=it;if(X){new Map;zt=it.reduce((function(e,t,n){var o=X(t);return e.length>0&&e[e.length-1].group===o?e[e.length-1].options.push(t):e.push({key:n,index:n,group:o,options:[t]}),e}),[])}return D&&Ue&&Ot(),{getRootProps:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.Z)({"aria-owns":ct?"".concat(Se,"-listbox"):null},e,{onKeyDown:yt(e),onMouseDown:At,onClick:Rt})},getInputLabelProps:function(){return{id:"".concat(Se,"-label"),htmlFor:Se}},getInputProps:function(){return{id:Se,value:Ve,onBlur:Ot,onFocus:St,onChange:It,onMouseDown:Tt,"aria-activedescendant":at?"":null,"aria-autocomplete":g?"both":"list","aria-controls":ct?"".concat(Se,"-listbox"):void 0,"aria-expanded":ct,autoComplete:"off",ref:ke,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:D}},getClearProps:function(){return{tabIndex:-1,onClick:xt}},getPopupIndicatorProps:function(){return{tabIndex:-1,onClick:Lt}},getTagProps:function(e){var t=e.index;return(0,a.Z)({key:t,"data-tag-index":t,tabIndex:-1},!be&&{onDelete:wt(t)})},getListboxProps:function(){return{role:"listbox",id:"".concat(Se,"-listbox"),"aria-labelledby":"".concat(Se,"-label"),ref:ft,onMouseDown:function(e){e.preventDefault()}}},getOptionProps:function(e){var n=e.index,o=e.option,r=(le?We:[We]).some((function(e){return null!=e&&ae(o,e)})),a=!!_&&_(o);return{key:t(o),tabIndex:-1,role:"option",id:"".concat(Se,"-option-").concat(n),onMouseMove:kt,onClick:Pt,onTouchStart:Ct,"data-option-index":n,"aria-disabled":a,"aria-selected":r}},id:Se,inputValue:Ve,value:We,dirty:Mt,expanded:at&&Le,popupOpen:at,focused:Ue||-1!==Me,anchorEl:Le,setAnchorEl:Ae,focusedTag:Me,groupedOptions:zt}}var x=n(12065),y=n(41),S=n(79834),O=n(35527),I=n(13400),k=n(81918),C=n(86779),P=n(55891),w=n(56059),L=n(96285),A=n(76189),R=n(80184),T=(0,A.Z)((0,R.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),M=n(89059),z=n(31402),N=n(66934),F=n(75878),D=n(21217);function E(e){return(0,D.Z)("MuiAutocomplete",e)}var W,j,q=(0,F.Z)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]),H=n(14036),V=n(42071),B=["autoComplete","autoHighlight","autoSelect","blurOnSelect","ChipProps","className","clearIcon","clearOnBlur","clearOnEscape","clearText","closeText","componentsProps","defaultValue","disableClearable","disableCloseOnSelect","disabled","disabledItemsFocusable","disableListWrap","disablePortal","filterOptions","filterSelectedOptions","forcePopupIcon","freeSolo","fullWidth","getLimitTagsText","getOptionDisabled","getOptionLabel","isOptionEqualToValue","groupBy","handleHomeEndKeys","id","includeInputInList","inputValue","limitTags","ListboxComponent","ListboxProps","loading","loadingText","multiple","noOptionsText","onChange","onClose","onHighlightChange","onInputChange","onOpen","open","openOnFocus","openText","options","PaperComponent","PopperComponent","popupIcon","readOnly","renderGroup","renderInput","renderOption","renderTags","selectOnFocus","size","slotProps","value"],G=["ref"],K=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState,r=n.fullWidth,a=n.hasClearIcon,i=n.hasPopupIcon,l=n.inputFocused,c=n.size;return[(0,o.Z)({},"& .".concat(q.tag),t.tag),(0,o.Z)({},"& .".concat(q.tag),t["tagSize".concat((0,H.Z)(c))]),(0,o.Z)({},"& .".concat(q.inputRoot),t.inputRoot),(0,o.Z)({},"& .".concat(q.input),t.input),(0,o.Z)({},"& .".concat(q.input),l&&t.inputFocused),t.root,r&&t.fullWidth,i&&t.hasPopupIcon,a&&t.hasClearIcon]}})((function(e){var t,n,r,i,l,c=e.ownerState;return(0,a.Z)((t={},(0,o.Z)(t,"&.".concat(q.focused," .").concat(q.clearIndicator),{visibility:"visible"}),(0,o.Z)(t,"@media (pointer: fine)",(0,o.Z)({},"&:hover .".concat(q.clearIndicator),{visibility:"visible"})),t),c.fullWidth&&{width:"100%"},(l={},(0,o.Z)(l,"& .".concat(q.tag),(0,a.Z)({margin:3,maxWidth:"calc(100% - 6px)"},"small"===c.size&&{margin:2,maxWidth:"calc(100% - 4px)"})),(0,o.Z)(l,"& .".concat(q.inputRoot),(n={flexWrap:"wrap"},(0,o.Z)(n,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:30}),(0,o.Z)(n,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:56}),(0,o.Z)(n,"& .".concat(q.input),{width:0,minWidth:30}),n)),(0,o.Z)(l,"& .".concat(C.Z.root),{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}}),(0,o.Z)(l,"& .".concat(C.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({},"& .".concat(C.Z.input),{padding:"2px 4px 3px 0"})),(0,o.Z)(l,"& .".concat(w.Z.root),(r={padding:9},(0,o.Z)(r,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:39}),(0,o.Z)(r,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:65}),(0,o.Z)(r,"& .".concat(q.input),{padding:"7.5px 4px 7.5px 5px"}),(0,o.Z)(r,"& .".concat(q.endAdornment),{right:9}),r)),(0,o.Z)(l,"& .".concat(w.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({paddingTop:6,paddingBottom:6,paddingLeft:6},"& .".concat(q.input),{padding:"2.5px 4px 2.5px 8px"})),(0,o.Z)(l,"& .".concat(L.Z.root),(i={paddingTop:19,paddingLeft:8},(0,o.Z)(i,".".concat(q.hasPopupIcon,"&, .").concat(q.hasClearIcon,"&"),{paddingRight:39}),(0,o.Z)(i,".".concat(q.hasPopupIcon,".").concat(q.hasClearIcon,"&"),{paddingRight:65}),(0,o.Z)(i,"& .".concat(L.Z.input),{padding:"7px 4px"}),(0,o.Z)(i,"& .".concat(q.endAdornment),{right:9}),i)),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.sizeSmall),(0,o.Z)({paddingBottom:1},"& .".concat(L.Z.input),{padding:"2.5px 4px"})),(0,o.Z)(l,"& .".concat(P.Z.hiddenLabel),{paddingTop:8}),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.hiddenLabel),(0,o.Z)({paddingTop:0,paddingBottom:0},"& .".concat(q.input),{paddingTop:16,paddingBottom:17})),(0,o.Z)(l,"& .".concat(L.Z.root,".").concat(P.Z.hiddenLabel,".").concat(P.Z.sizeSmall),(0,o.Z)({},"& .".concat(q.input),{paddingTop:8,paddingBottom:9})),(0,o.Z)(l,"& .".concat(q.input),(0,a.Z)({flexGrow:1,textOverflow:"ellipsis",opacity:0},c.inputFocused&&{opacity:1})),l))})),U=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:function(e,t){return t.endAdornment}})({position:"absolute",right:0,top:"calc(50% - 14px)"}),_=(0,N.ZP)(I.Z,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:function(e,t){return t.clearIndicator}})({marginRight:-2,padding:4,visibility:"hidden"}),J=(0,N.ZP)(I.Z,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:function(e,t){var n=e.ownerState;return(0,a.Z)({},t.popupIndicator,n.popupOpen&&t.popupIndicatorOpen)}})((function(e){var t=e.ownerState;return(0,a.Z)({padding:2,marginRight:-2},t.popupOpen&&{transform:"rotate(180deg)"})})),Q=(0,N.ZP)(y.Z,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:function(e,t){var n=e.ownerState;return[(0,o.Z)({},"& .".concat(q.option),t.option),t.popper,n.disablePortal&&t.popperDisablePortal]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({zIndex:(t.vars||t).zIndex.modal},n.disablePortal&&{position:"absolute"})})),X=(0,N.ZP)(O.Z,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:function(e,t){return t.paper}})((function(e){var t=e.theme;return(0,a.Z)({},t.typography.body1,{overflow:"auto"})})),Y=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:function(e,t){return t.loading}})((function(e){var t=e.theme;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),$=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:function(e,t){return t.noOptions}})((function(e){var t=e.theme;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),ee=(0,N.ZP)("div",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:function(e,t){return t.listbox}})((function(e){var t,n,r=e.theme;return(0,o.Z)({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative"},"& .".concat(q.option),(n={minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16},(0,o.Z)(n,r.breakpoints.up("sm"),{minHeight:"auto"}),(0,o.Z)(n,"&.".concat(q.focused),{backgroundColor:(r.vars||r).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}),(0,o.Z)(n,'&[aria-disabled="true"]',{opacity:(r.vars||r).palette.action.disabledOpacity,pointerEvents:"none"}),(0,o.Z)(n,"&.".concat(q.focusVisible),{backgroundColor:(r.vars||r).palette.action.focus}),(0,o.Z)(n,'&[aria-selected="true"]',(t={backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / ").concat(r.vars.palette.action.selectedOpacity,")"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity)},(0,o.Z)(t,"&.".concat(q.focused),{backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / calc(").concat(r.vars.palette.action.selectedOpacity," + ").concat(r.vars.palette.action.hoverOpacity,"))"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity+r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(r.vars||r).palette.action.selected}}),(0,o.Z)(t,"&.".concat(q.focusVisible),{backgroundColor:r.vars?"rgba(".concat(r.vars.palette.primary.mainChannel," / calc(").concat(r.vars.palette.action.selectedOpacity," + ").concat(r.vars.palette.action.focusOpacity,"))"):(0,x.Fq)(r.palette.primary.main,r.palette.action.selectedOpacity+r.palette.action.focusOpacity)}),t)),n))})),te=(0,N.ZP)(S.Z,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:function(e,t){return t.groupLabel}})((function(e){var t=e.theme;return{backgroundColor:(t.vars||t).palette.background.paper,top:-8}})),ne=(0,N.ZP)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:function(e,t){return t.groupUl}})((0,o.Z)({padding:0},"& .".concat(q.option),{paddingLeft:24})),oe=i.forwardRef((function(e,t){var n,o,s,u,p,d=(0,z.Z)({props:e,name:"MuiAutocomplete"}),f=(d.autoComplete,d.autoHighlight,d.autoSelect,d.blurOnSelect,d.ChipProps),v=d.className,g=d.clearIcon,m=void 0===g?W||(W=(0,R.jsx)(T,{fontSize:"small"})):g,h=d.clearOnBlur,b=(void 0===h&&d.freeSolo,d.clearOnEscape,d.clearText),x=void 0===b?"Clear":b,S=d.closeText,I=void 0===S?"Close":S,C=d.componentsProps,P=void 0===C?{}:C,w=d.defaultValue,L=(void 0===w&&d.multiple,d.disableClearable),A=void 0!==L&&L,N=(d.disableCloseOnSelect,d.disabled),F=void 0!==N&&N,D=(d.disabledItemsFocusable,d.disableListWrap,d.disablePortal),q=void 0!==D&&D,oe=(d.filterSelectedOptions,d.forcePopupIcon),re=void 0===oe?"auto":oe,ae=d.freeSolo,ie=void 0!==ae&&ae,le=d.fullWidth,ce=void 0!==le&&le,se=d.getLimitTagsText,ue=void 0===se?function(e){return"+".concat(e)}:se,pe=d.getOptionLabel,de=void 0===pe?function(e){var t;return null!=(t=e.label)?t:e}:pe,fe=d.groupBy,ve=d.handleHomeEndKeys,ge=(void 0===ve&&d.freeSolo,d.includeInputInList,d.limitTags),me=void 0===ge?-1:ge,he=d.ListboxComponent,be=void 0===he?"ul":he,Ze=d.ListboxProps,xe=d.loading,ye=void 0!==xe&&xe,Se=d.loadingText,Oe=void 0===Se?"Loading\u2026":Se,Ie=d.multiple,ke=void 0!==Ie&&Ie,Ce=d.noOptionsText,Pe=void 0===Ce?"No options":Ce,we=(d.openOnFocus,d.openText),Le=void 0===we?"Open":we,Ae=d.PaperComponent,Re=void 0===Ae?O.Z:Ae,Te=d.PopperComponent,Me=void 0===Te?y.Z:Te,ze=d.popupIcon,Ne=void 0===ze?j||(j=(0,R.jsx)(M.Z,{})):ze,Fe=d.readOnly,De=void 0!==Fe&&Fe,Ee=d.renderGroup,We=d.renderInput,je=d.renderOption,qe=d.renderTags,He=d.selectOnFocus,Ve=(void 0===He&&d.freeSolo,d.size),Be=void 0===Ve?"medium":Ve,Ge=d.slotProps,Ke=void 0===Ge?{}:Ge,Ue=(0,r.Z)(d,B),_e=Z((0,a.Z)({},d,{componentName:"Autocomplete"})),Je=_e.getRootProps,Qe=_e.getInputProps,Xe=_e.getInputLabelProps,Ye=_e.getPopupIndicatorProps,$e=_e.getClearProps,et=_e.getTagProps,tt=_e.getListboxProps,nt=_e.getOptionProps,ot=_e.value,rt=_e.dirty,at=_e.expanded,it=_e.id,lt=_e.popupOpen,ct=_e.focused,st=_e.focusedTag,ut=_e.anchorEl,pt=_e.setAnchorEl,dt=_e.inputValue,ft=_e.groupedOptions,vt=!A&&!F&&rt&&!De,gt=(!ie||!0===re)&&!1!==re,mt=Qe().onMouseDown,ht=(null!=Ze?Ze:{}).ref,bt=tt(),Zt=bt.ref,xt=(0,r.Z)(bt,G),yt=(0,V.Z)(Zt,ht),St=(0,a.Z)({},d,{disablePortal:q,expanded:at,focused:ct,fullWidth:ce,hasClearIcon:vt,hasPopupIcon:gt,inputFocused:-1===st,popupOpen:lt,size:Be}),Ot=function(e){var t=e.classes,n=e.disablePortal,o=e.expanded,r=e.focused,a=e.fullWidth,i=e.hasClearIcon,l=e.hasPopupIcon,s=e.inputFocused,u=e.popupOpen,p=e.size,d={root:["root",o&&"expanded",r&&"focused",a&&"fullWidth",i&&"hasClearIcon",l&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",s&&"inputFocused"],tag:["tag","tagSize".concat((0,H.Z)(p))],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",u&&"popupIndicatorOpen"],popper:["popper",n&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,c.Z)(d,E,t)}(St);if(ke&&ot.length>0){var It=function(e){return(0,a.Z)({className:Ot.tag,disabled:F},et(e))};p=qe?qe(ot,It,St):ot.map((function(e,t){return(0,R.jsx)(k.Z,(0,a.Z)({label:de(e),size:Be},It({index:t}),f))}))}if(me>-1&&Array.isArray(p)){var kt=p.length-me;!ct&&kt>0&&(p=p.splice(0,me)).push((0,R.jsx)("span",{className:Ot.tag,children:ue(kt)},p.length))}var Ct=Ee||function(e){return(0,R.jsxs)("li",{children:[(0,R.jsx)(te,{className:Ot.groupLabel,ownerState:St,component:"div",children:e.group}),(0,R.jsx)(ne,{className:Ot.groupUl,ownerState:St,children:e.children})]},e.key)},Pt=je||function(e,t){return(0,R.jsx)("li",(0,a.Z)({},e,{children:de(t)}))},wt=function(e,t){var n=nt({option:e,index:t});return Pt((0,a.Z)({},n,{className:Ot.option}),e,{selected:n["aria-selected"],index:t,inputValue:dt})},Lt=null!=(n=Ke.clearIndicator)?n:P.clearIndicator,At=null!=(o=Ke.paper)?o:P.paper,Rt=null!=(s=Ke.popper)?s:P.popper,Tt=null!=(u=Ke.popupIndicator)?u:P.popupIndicator;return(0,R.jsxs)(i.Fragment,{children:[(0,R.jsx)(K,(0,a.Z)({ref:t,className:(0,l.Z)(Ot.root,v),ownerState:St},Je(Ue),{children:We({id:it,disabled:F,fullWidth:!0,size:"small"===Be?"small":void 0,InputLabelProps:Xe(),InputProps:(0,a.Z)({ref:pt,className:Ot.inputRoot,startAdornment:p,onClick:function(e){e.target===e.currentTarget&&mt(e)}},(vt||gt)&&{endAdornment:(0,R.jsxs)(U,{className:Ot.endAdornment,ownerState:St,children:[vt?(0,R.jsx)(_,(0,a.Z)({},$e(),{"aria-label":x,title:x,ownerState:St},Lt,{className:(0,l.Z)(Ot.clearIndicator,null==Lt?void 0:Lt.className),children:m})):null,gt?(0,R.jsx)(J,(0,a.Z)({},Ye(),{disabled:F,"aria-label":lt?I:Le,title:lt?I:Le,ownerState:St},Tt,{className:(0,l.Z)(Ot.popupIndicator,null==Tt?void 0:Tt.className),children:Ne})):null]})}),inputProps:(0,a.Z)({className:Ot.input,disabled:F,readOnly:De},Qe())})})),ut?(0,R.jsx)(Q,(0,a.Z)({as:Me,disablePortal:q,style:{width:ut?ut.clientWidth:null},ownerState:St,role:"presentation",anchorEl:ut,open:lt},Rt,{className:(0,l.Z)(Ot.popper,null==Rt?void 0:Rt.className),children:(0,R.jsxs)(X,(0,a.Z)({ownerState:St,as:Re},At,{className:(0,l.Z)(Ot.paper,null==At?void 0:At.className),children:[ye&&0===ft.length?(0,R.jsx)(Y,{className:Ot.loading,ownerState:St,children:Oe}):null,0!==ft.length||ie||ye?null:(0,R.jsx)($,{className:Ot.noOptions,ownerState:St,role:"presentation",onMouseDown:function(e){e.preventDefault()},children:Pe}),ft.length>0?(0,R.jsx)(ee,(0,a.Z)({as:be,className:Ot.listbox,ownerState:St},xt,Ze,{ref:yt,children:ft.map((function(e,t){return fe?Ct({key:e.key,group:e.group,children:e.options.map((function(t,n){return wt(t,e.index+n)}))}):wt(e,t)}))})):null]}))})):null]})}))},93840:function(e,t,n){var o=n(72791).createContext(void 0);t.Z=o},76147:function(e,t,n){function o(e){var t=e.props,n=e.states,o=e.muiFormControl;return n.reduce((function(e,n){return e[n]=t[n],o&&"undefined"===typeof t[n]&&(e[n]=o[n]),e}),{})}n.d(t,{Z:function(){return o}})},52930:function(e,t,n){n.d(t,{Z:function(){return a}});var o=n(72791),r=n(93840);function a(){return o.useContext(r.Z)}},17133:function(e,t,n){var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(28182),c=n(94419),s=n(76147),u=n(52930),p=n(14036),d=n(31402),f=n(66934),v=n(10843),g=n(80184),m=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return(0,a.Z)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,a.Z)({color:(n.vars||n).palette.text.secondary},n.typography.body1,(t={lineHeight:"1.4375em",padding:0,position:"relative"},(0,o.Z)(t,"&.".concat(v.Z.focused),{color:(n.vars||n).palette[r.color].main}),(0,o.Z)(t,"&.".concat(v.Z.disabled),{color:(n.vars||n).palette.text.disabled}),(0,o.Z)(t,"&.".concat(v.Z.error),{color:(n.vars||n).palette.error.main}),t))})),b=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,t){return t.asterisk}})((function(e){var t=e.theme;return(0,o.Z)({},"&.".concat(v.Z.error),{color:(t.vars||t).palette.error.main})})),Z=i.forwardRef((function(e,t){var n=(0,d.Z)({props:e,name:"MuiFormLabel"}),o=n.children,i=n.className,f=n.component,Z=void 0===f?"label":f,x=(0,r.Z)(n,m),y=(0,u.Z)(),S=(0,s.Z)({props:n,muiFormControl:y,states:["color","required","focused","disabled","error","filled"]}),O=(0,a.Z)({},n,{color:S.color||"primary",component:Z,disabled:S.disabled,error:S.error,filled:S.filled,focused:S.focused,required:S.required}),I=function(e){var t=e.classes,n=e.color,o=e.focused,r=e.disabled,a=e.error,i=e.filled,l=e.required,s={root:["root","color".concat((0,p.Z)(n)),r&&"disabled",a&&"error",i&&"filled",o&&"focused",l&&"required"],asterisk:["asterisk",a&&"error"]};return(0,c.Z)(s,v.M,t)}(O);return(0,g.jsxs)(h,(0,a.Z)({as:Z,ownerState:O,className:(0,l.Z)(I.root,i),ref:t},x,{children:[o,S.required&&(0,g.jsxs)(b,{ownerState:O,"aria-hidden":!0,className:I.asterisk,children:["\u2009","*"]})]}))}));t.Z=Z},10843:function(e,t,n){n.d(t,{M:function(){return a}});var o=n(75878),r=n(21217);function a(e){return(0,r.Z)("MuiFormLabel",e)}var i=(0,o.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);t.Z=i},30829:function(e,t,n){n.d(t,{Z:function(){return y}});var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(94419),c=n(28182),s=n(76147),u=n(52930),p=n(17133),d=n(10843),f=n(31402),v=n(66934),g=n(75878),m=n(21217);function h(e){return(0,m.Z)("MuiInputLabel",e)}(0,g.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var b=n(80184),Z=["disableAnimation","margin","shrink","variant","className"],x=(0,v.ZP)(p.Z,{shouldForwardProp:function(e){return(0,v.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,o.Z)({},"& .".concat(d.Z.asterisk),t.asterisk),t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,t[n.variant]]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),y=i.forwardRef((function(e,t){var n=(0,f.Z)({name:"MuiInputLabel",props:e}),o=n.disableAnimation,i=void 0!==o&&o,p=n.shrink,d=n.className,v=(0,r.Z)(n,Z),g=(0,u.Z)(),m=p;"undefined"===typeof m&&g&&(m=g.filled||g.focused||g.adornedStart);var y=(0,s.Z)({props:n,muiFormControl:g,states:["size","variant","required"]}),S=(0,a.Z)({},n,{disableAnimation:i,formControl:g,shrink:m,size:y.size,variant:y.variant,required:y.required}),O=function(e){var t=e.classes,n=e.formControl,o=e.size,r=e.shrink,i={root:["root",n&&"formControl",!e.disableAnimation&&"animated",r&&"shrink","small"===o&&"sizeSmall",e.variant],asterisk:[e.required&&"asterisk"]},c=(0,l.Z)(i,h,t);return(0,a.Z)({},t,c)}(S);return(0,b.jsx)(x,(0,a.Z)({"data-shrink":m,ownerState:S,ref:t,className:(0,c.Z)(O.root,d)},v,{classes:O}))}))},79834:function(e,t,n){n.d(t,{Z:function(){return b}});var o=n(63366),r=n(87462),a=n(72791),i=n(28182),l=n(94419),c=n(66934),s=n(31402),u=n(14036),p=n(75878),d=n(21217);function f(e){return(0,d.Z)("MuiListSubheader",e)}(0,p.Z)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var v=n(80184),g=["className","color","component","disableGutters","disableSticky","inset"],m=(0,c.ZP)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,"default"!==n.color&&t["color".concat((0,u.Z)(n.color))],!n.disableGutters&&t.gutters,n.inset&&t.inset,!n.disableSticky&&t.sticky]}})((function(e){var t=e.theme,n=e.ownerState;return(0,r.Z)({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(t.vars||t).palette.text.secondary,fontFamily:t.typography.fontFamily,fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.pxToRem(14)},"primary"===n.color&&{color:(t.vars||t).palette.primary.main},"inherit"===n.color&&{color:"inherit"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.inset&&{paddingLeft:72},!n.disableSticky&&{position:"sticky",top:0,zIndex:1,backgroundColor:(t.vars||t).palette.background.paper})})),h=a.forwardRef((function(e,t){var n=(0,s.Z)({props:e,name:"MuiListSubheader"}),a=n.className,c=n.color,p=void 0===c?"default":c,d=n.component,h=void 0===d?"li":d,b=n.disableGutters,Z=void 0!==b&&b,x=n.disableSticky,y=void 0!==x&&x,S=n.inset,O=void 0!==S&&S,I=(0,o.Z)(n,g),k=(0,r.Z)({},n,{color:p,component:h,disableGutters:Z,disableSticky:y,inset:O}),C=function(e){var t=e.classes,n=e.color,o=e.disableGutters,r=e.inset,a=e.disableSticky,i={root:["root","default"!==n&&"color".concat((0,u.Z)(n)),!o&&"gutters",r&&"inset",!a&&"sticky"]};return(0,l.Z)(i,f,t)}(k);return(0,v.jsx)(m,(0,r.Z)({as:h,className:(0,i.Z)(C.root,a),ref:t,ownerState:k},I))}));h.muiSkipListHighlight=!0;var b=h}}]);
+//# sourceMappingURL=2260.c0246fc5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2260.c0246fc5.chunk.js.map b/portal-ui/build/static/js/2260.c0246fc5.chunk.js.map
new file mode 100644
index 000000000..d3de922cb
--- /dev/null
+++ b/portal-ui/build/static/js/2260.c0246fc5.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2260.c0246fc5.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport default function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value,\n inputValue\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n let listboxNode = listboxRef.current;\n if (listboxRef.current.getAttribute('role') !== 'listbox') {\n listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n }\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n //\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const checkHighlightedOptionExists = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n const previousHighlightedOptionExists = filteredOptions.some(option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n if (previousHighlightedOptionExists) {\n return true;\n }\n }\n }\n return false;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n // If it exists and the value and the inputValue haven't changed, return, otherwise continue execution\n if (checkHighlightedOptionExists()) {\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseMove = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n if (highlightedIndexRef.current !== index) {\n setHighlightedIndex({\n event,\n index,\n reason: 'mouse'\n });\n }\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (inputValue === '' || !open) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperatively so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseMove: handleOptionMouseMove,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n });\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {T[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {T[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {T} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {T} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {T} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {T} option The option to test.\n * @param {T} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T|T[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {T} option The option to render.\n * @param {object} state The state of the component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {T[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;"],"names":["stripDiacritics","string","normalize","replace","findIndex","array","comp","i","length","defaultFilterOptions","config","arguments","undefined","_config$ignoreAccents","ignoreAccents","_config$ignoreCase","ignoreCase","limit","_config$matchFrom","matchFrom","stringify","_config$trim","trim","options","_ref","inputValue","getOptionLabel","input","toLowerCase","filteredOptions","filter","option","candidate","indexOf","slice","createFilterOptions","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","current","parentElement","contains","document","activeElement","useAutocomplete","props","_props$unstable_isAct","unstable_isActiveElementInListbox","_props$unstable_class","unstable_classNamePrefix","_props$autoComplete","autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","componentName","_props$defaultValue","defaultValue","multiple","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","disabledProp","disabled","_props$disabledItemsF","disabledItemsFocusable","_props$disableListWra","disableListWrap","_props$filterOptions","filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_option$label","label","groupBy","_props$handleHomeEndK","handleHomeEndKeys","idProp","id","_props$includeInputIn","includeInputInList","inputValueProp","_props$isOptionEqualT","isOptionEqualToValue","value","_props$multiple","onChange","onClose","onHighlightChange","onInputChange","onOpen","openProp","open","_props$openOnFocus","openOnFocus","_props$readOnly","readOnly","_props$selectOnFocus","selectOnFocus","valueProp","useId","optionLabel","String","ignoreFocus","React","firstFocus","inputRef","_React$useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","_React$useState3","_React$useState4","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled","useControlled","controlled","default","name","_useControlled2","setValueState","_useControlled3","state","_useControlled4","setInputValueState","_React$useState5","_React$useState6","focused","setFocused","resetInputValue","event","newValue","newInputValue","_useControlled5","_useControlled6","setOpenState","_React$useState7","_React$useState8","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","some","value2","previousProps","usePreviousProps","valueChange","listboxAvailable","focusTag","useEventCallback","tagToFocus","focus","querySelector","concat","setHighlightedIndex","_ref2","index","_ref2$reason","reason","removeAttribute","setAttribute","prev","classList","remove","listboxNode","getAttribute","add","scrollHeight","clientHeight","element","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","_ref3","diff","_ref3$direction","direction","_ref3$reason","nextIndex","nextFocus","nextFocusDisabled","hasAttribute","validOptionIndex","maxIndex","newIndex","Math","abs","getNextIndex","setSelectionRange","syncHighlightedIndex","value1","every","val","previousHighlightedOption","checkHighlightedOptionExists","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","node","setRef","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","origin","Array","isArray","push","splice","ctrlKey","metaKey","blur","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","other","onKeyDown","defaultMuiPrevented","key","which","preventDefault","stopPropagation","handleFocus","handleBlur","handleInputChange","target","handleOptionMouseMove","Number","currentTarget","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","select","handleInputMouseDown","dirty","groupedOptions","Map","reduce","acc","group","getRootProps","_extends","onMouseDown","onClick","getInputLabelProps","htmlFor","getInputProps","onBlur","onFocus","ref","autoCapitalize","spellCheck","role","getClearProps","tabIndex","getPopupIndicatorProps","getTagProps","_ref4","onDelete","getListboxProps","getOptionProps","_ref5","selected","onMouseMove","onTouchStart","expanded","createSvgIcon","_jsx","d","getAutocompleteUtilityClass","slot","generateUtilityClass","_ClearIcon","_ArrowDropDownIcon","generateUtilityClasses","_excluded","_excluded2","AutocompleteRoot","styled","overridesResolver","styles","ownerState","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","size","_defineProperty","autocompleteClasses","tag","capitalize","inputRoot","root","_ref6","_extends2","_$concat","_$concat2","_$concat3","_extends3","clearIndicator","visibility","width","margin","maxWidth","flexWrap","paddingRight","minWidth","inputClasses","paddingBottom","padding","inputBaseClasses","sizeSmall","outlinedInputClasses","endAdornment","right","paddingTop","paddingLeft","filledInputClasses","hiddenLabel","flexGrow","textOverflow","opacity","AutocompleteEndAdornment","position","top","AutocompleteClearIndicator","IconButton","marginRight","AutocompletePopupIndicator","_ref7","popupIndicator","popupIndicatorOpen","_ref8","transform","AutocompletePopper","Popper","popper","disablePortal","popperDisablePortal","_ref10","theme","zIndex","vars","modal","AutocompletePaper","Paper","paper","_ref11","typography","body1","overflow","AutocompleteLoading","loading","_ref12","color","palette","text","secondary","AutocompleteNoOptions","noOptions","_ref13","AutocompleteListbox","listbox","_ref14","_ariaSelectedTru","_$concat4","listStyle","maxHeight","minHeight","display","justifyContent","alignItems","cursor","boxSizing","outline","WebkitTapHighlightColor","breakpoints","up","backgroundColor","action","hover","disabledOpacity","pointerEvents","focusVisible","primary","mainChannel","selectedOpacity","alpha","main","hoverOpacity","focusOpacity","AutocompleteGroupLabel","ListSubheader","groupLabel","_ref16","background","AutocompleteGroupUl","groupUl","inProps","_slotProps$clearIndic","_slotProps$paper","_slotProps$popper","_slotProps$popupIndic","startAdornment","useThemeProps","ChipProps","className","_props$clearIcon","clearIcon","ClearIcon","fontSize","_props$clearText","clearText","_props$closeText","closeText","_props$componentsProp","componentsProps","_props$disabled","_props$disablePortal","_props$forcePopupIcon","forcePopupIcon","_props$fullWidth","_props$getLimitTagsTe","getLimitTagsText","more","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","_props$PaperComponent","PaperComponent","_props$PopperComponen","PopperComponent","_props$popupIcon","popupIcon","ArrowDropDownIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","_props$size","_props$slotProps","slotProps","_objectWithoutPropertiesLoose","_useAutocomplete","externalListboxRef","_getListboxProps","otherListboxProps","combinedListboxRef","useForkRef","classes","slots","composeClasses","useUtilityClasses","getCustomizedTagProps","params","map","Chip","children","_jsxs","component","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","clsx","InputLabelProps","InputProps","title","inputProps","as","style","clientWidth","option2","index2","FormControlContext","formControlState","states","muiFormControl","useFormControl","FormLabelRoot","colorSecondary","filled","lineHeight","formLabelClasses","error","AsteriskComponent","asterisk","FormLabel","_props$component","fcs","required","getFormLabelUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","shrink","disableAnimation","animated","variant","transformOrigin","whiteSpace","left","transition","transitions","create","duration","shorter","easing","easeOut","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses","getListSubheaderUtilityClass","ListSubheaderRoot","disableGutters","gutters","inset","disableSticky","sticky","fontFamily","fontWeight","fontWeightMedium","pxToRem","_props$color","_props$disableGutters","_props$disableSticky","_props$inset","muiSkipListHighlight"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2432.e69c0c1d.chunk.js b/portal-ui/build/static/js/2432.e69c0c1d.chunk.js
deleted file mode 100644
index 80aa1c166..000000000
--- a/portal-ui/build/static/js/2432.e69c0c1d.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2432],{93840:function(e,t,a){var o=a(72791).createContext(void 0);t.Z=o},76147:function(e,t,a){function o(e){var t=e.props,a=e.states,o=e.muiFormControl;return a.reduce((function(e,a){return e[a]=t[a],o&&"undefined"===typeof t[a]&&(e[a]=o[a]),e}),{})}a.d(t,{Z:function(){return o}})},52930:function(e,t,a){a.d(t,{Z:function(){return n}});var o=a(72791),r=a(93840);function n(){return o.useContext(r.Z)}},79836:function(e,t,a){a.d(t,{Z:function(){return Z}});var o=a(63366),r=a(87462),n=a(72791),i=a(28182),c=a(94419),l=a(46646),d=a(31402),s=a(66934),p=a(75878),u=a(21217);function v(e){return(0,u.Z)("MuiTable",e)}(0,p.Z)("MuiTable",["root","stickyHeader"]);var g=a(80184),f=["className","component","padding","size","stickyHeader"],m=(0,s.ZP)("table",{name:"MuiTable",slot:"Root",overridesResolver:function(e,t){var a=e.ownerState;return[t.root,a.stickyHeader&&t.stickyHeader]}})((function(e){var t=e.theme,a=e.ownerState;return(0,r.Z)({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":(0,r.Z)({},t.typography.body2,{padding:t.spacing(2),color:(t.vars||t).palette.text.secondary,textAlign:"left",captionSide:"bottom"})},a.stickyHeader&&{borderCollapse:"separate"})})),y="table",Z=n.forwardRef((function(e,t){var a=(0,d.Z)({props:e,name:"MuiTable"}),s=a.className,p=a.component,u=void 0===p?y:p,Z=a.padding,h=void 0===Z?"normal":Z,b=a.size,x=void 0===b?"medium":b,k=a.stickyHeader,w=void 0!==k&&k,C=(0,o.Z)(a,f),H=(0,r.Z)({},a,{component:u,padding:h,size:x,stickyHeader:w}),R=function(e){var t=e.classes,a={root:["root",e.stickyHeader&&"stickyHeader"]};return(0,c.Z)(a,v,t)}(H),T=n.useMemo((function(){return{padding:h,size:x,stickyHeader:w}}),[h,x,w]);return(0,g.jsx)(l.Z.Provider,{value:T,children:(0,g.jsx)(m,(0,r.Z)({as:u,role:u===y?null:"table",ref:t,className:(0,i.Z)(R.root,s),ownerState:H},C))})}))},46646:function(e,t,a){var o=a(72791).createContext();t.Z=o},829:function(e,t,a){var o=a(72791).createContext();t.Z=o},53382:function(e,t,a){a.d(t,{Z:function(){return h}});var o=a(87462),r=a(63366),n=a(72791),i=a(28182),c=a(94419),l=a(829),d=a(31402),s=a(66934),p=a(75878),u=a(21217);function v(e){return(0,u.Z)("MuiTableBody",e)}(0,p.Z)("MuiTableBody",["root"]);var g=a(80184),f=["className","component"],m=(0,s.ZP)("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"table-row-group"}),y={variant:"body"},Z="tbody",h=n.forwardRef((function(e,t){var a=(0,d.Z)({props:e,name:"MuiTableBody"}),n=a.className,s=a.component,p=void 0===s?Z:s,u=(0,r.Z)(a,f),h=(0,o.Z)({},a,{component:p}),b=function(e){var t=e.classes;return(0,c.Z)({root:["root"]},v,t)}(h);return(0,g.jsx)(l.Z.Provider,{value:y,children:(0,g.jsx)(m,(0,o.Z)({className:(0,i.Z)(b.root,n),as:p,ref:t,role:p===Z?null:"rowgroup",ownerState:h},u))})}))},53994:function(e,t,a){a.d(t,{Z:function(){return k}});var o=a(4942),r=a(63366),n=a(87462),i=a(72791),c=a(28182),l=a(94419),d=a(12065),s=a(14036),p=a(46646),u=a(829),v=a(31402),g=a(66934),f=a(75878),m=a(21217);function y(e){return(0,m.Z)("MuiTableCell",e)}var Z=(0,f.Z)("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"]),h=a(80184),b=["align","className","component","padding","scope","size","sortDirection","variant"],x=(0,g.ZP)("td",{name:"MuiTableCell",slot:"Root",overridesResolver:function(e,t){var a=e.ownerState;return[t.root,t[a.variant],t["size".concat((0,s.Z)(a.size))],"normal"!==a.padding&&t["padding".concat((0,s.Z)(a.padding))],"inherit"!==a.align&&t["align".concat((0,s.Z)(a.align))],a.stickyHeader&&t.stickyHeader]}})((function(e){var t=e.theme,a=e.ownerState;return(0,n.Z)({},t.typography.body2,{display:"table-cell",verticalAlign:"inherit",borderBottom:t.vars?"1px solid ".concat(t.vars.palette.TableCell.border):"1px solid\n ".concat("light"===t.palette.mode?(0,d.$n)((0,d.Fq)(t.palette.divider,1),.88):(0,d._j)((0,d.Fq)(t.palette.divider,1),.68)),textAlign:"left",padding:16},"head"===a.variant&&{color:(t.vars||t).palette.text.primary,lineHeight:t.typography.pxToRem(24),fontWeight:t.typography.fontWeightMedium},"body"===a.variant&&{color:(t.vars||t).palette.text.primary},"footer"===a.variant&&{color:(t.vars||t).palette.text.secondary,lineHeight:t.typography.pxToRem(21),fontSize:t.typography.pxToRem(12)},"small"===a.size&&(0,o.Z)({padding:"6px 16px"},"&.".concat(Z.paddingCheckbox),{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}),"checkbox"===a.padding&&{width:48,padding:"0 0 0 4px"},"none"===a.padding&&{padding:0},"left"===a.align&&{textAlign:"left"},"center"===a.align&&{textAlign:"center"},"right"===a.align&&{textAlign:"right",flexDirection:"row-reverse"},"justify"===a.align&&{textAlign:"justify"},a.stickyHeader&&{position:"sticky",top:0,zIndex:2,backgroundColor:(t.vars||t).palette.background.default})})),k=i.forwardRef((function(e,t){var a,o=(0,v.Z)({props:e,name:"MuiTableCell"}),d=o.align,g=void 0===d?"inherit":d,f=o.className,m=o.component,Z=o.padding,k=o.scope,w=o.size,C=o.sortDirection,H=o.variant,R=(0,r.Z)(o,b),T=i.useContext(p.Z),M=i.useContext(u.Z),z=M&&"head"===M.variant,N=k;"td"===(a=m||(z?"th":"td"))?N=void 0:!N&&z&&(N="col");var S=H||M&&M.variant,j=(0,n.Z)({},o,{align:g,component:a,padding:Z||(T&&T.padding?T.padding:"normal"),size:w||(T&&T.size?T.size:"medium"),sortDirection:C,stickyHeader:"head"===S&&T&&T.stickyHeader,variant:S}),A=function(e){var t=e.classes,a=e.variant,o=e.align,r=e.padding,n=e.size,i={root:["root",a,e.stickyHeader&&"stickyHeader","inherit"!==o&&"align".concat((0,s.Z)(o)),"normal"!==r&&"padding".concat((0,s.Z)(r)),"size".concat((0,s.Z)(n))]};return(0,l.Z)(i,y,t)}(j),O=null;return C&&(O="asc"===C?"ascending":"descending"),(0,h.jsx)(x,(0,n.Z)({as:a,ref:t,className:(0,c.Z)(A.root,f),"aria-sort":O,scope:N,ownerState:j},R))}))},35855:function(e,t,a){a.d(t,{Z:function(){return b}});var o=a(4942),r=a(87462),n=a(63366),i=a(72791),c=a(28182),l=a(94419),d=a(12065),s=a(829),p=a(31402),u=a(66934),v=a(75878),g=a(21217);function f(e){return(0,g.Z)("MuiTableRow",e)}var m=(0,v.Z)("MuiTableRow",["root","selected","hover","head","footer"]),y=a(80184),Z=["className","component","hover","selected"],h=(0,u.ZP)("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:function(e,t){var a=e.ownerState;return[t.root,a.head&&t.head,a.footer&&t.footer]}})((function(e){var t,a=e.theme;return t={color:"inherit",display:"table-row",verticalAlign:"middle",outline:0},(0,o.Z)(t,"&.".concat(m.hover,":hover"),{backgroundColor:(a.vars||a).palette.action.hover}),(0,o.Z)(t,"&.".concat(m.selected),{backgroundColor:a.vars?"rgba(".concat(a.vars.palette.primary.mainChannel," / ").concat(a.vars.palette.action.selectedOpacity,")"):(0,d.Fq)(a.palette.primary.main,a.palette.action.selectedOpacity),"&:hover":{backgroundColor:a.vars?"rgba(".concat(a.vars.palette.primary.mainChannel," / calc(").concat(a.vars.palette.action.selectedOpacity," + ").concat(a.vars.palette.action.hoverOpacity,"))"):(0,d.Fq)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity)}}),t})),b=i.forwardRef((function(e,t){var a=(0,p.Z)({props:e,name:"MuiTableRow"}),o=a.className,d=a.component,u=void 0===d?"tr":d,v=a.hover,g=void 0!==v&&v,m=a.selected,b=void 0!==m&&m,x=(0,n.Z)(a,Z),k=i.useContext(s.Z),w=(0,r.Z)({},a,{component:u,hover:g,selected:b,head:k&&"head"===k.variant,footer:k&&"footer"===k.variant}),C=function(e){var t=e.classes,a={root:["root",e.selected&&"selected",e.hover&&"hover",e.head&&"head",e.footer&&"footer"]};return(0,l.Z)(a,f,t)}(w);return(0,y.jsx)(h,(0,r.Z)({as:u,ref:t,className:(0,c.Z)(C.root,o),role:"tr"===u?null:"row",ownerState:w},x))}))}}]);
-//# sourceMappingURL=2432.e69c0c1d.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2432.e69c0c1d.chunk.js.map b/portal-ui/build/static/js/2432.e69c0c1d.chunk.js.map
deleted file mode 100644
index 0e7955736..000000000
--- a/portal-ui/build/static/js/2432.e69c0c1d.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2432.e69c0c1d.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/Table/tableClasses.js","../node_modules/@mui/material/Table/Table.js","../node_modules/@mui/material/Table/TableContext.js","../node_modules/@mui/material/Table/Tablelvl2Context.js","../node_modules/@mui/material/TableBody/tableBodyClasses.js","../node_modules/@mui/material/TableBody/TableBody.js","../node_modules/@mui/material/TableCell/tableCellClasses.js","../node_modules/@mui/material/TableCell/TableCell.js","../node_modules/@mui/material/TableRow/tableRowClasses.js","../node_modules/@mui/material/TableRow/TableRow.js"],"sourcesContent":["import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableUtilityClass(slot) {\n return generateUtilityClass('MuiTable', slot);\n}\nconst tableClasses = generateUtilityClasses('MuiTable', ['root', 'stickyHeader']);\nexport default tableClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"padding\", \"size\", \"stickyHeader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport TableContext from './TableContext';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableUtilityClass } from './tableClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n stickyHeader\n } = ownerState;\n const slots = {\n root: ['root', stickyHeader && 'stickyHeader']\n };\n return composeClasses(slots, getTableUtilityClass, classes);\n};\nconst TableRoot = styled('table', {\n name: 'MuiTable',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.stickyHeader && styles.stickyHeader];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'table',\n width: '100%',\n borderCollapse: 'collapse',\n borderSpacing: 0,\n '& caption': _extends({}, theme.typography.body2, {\n padding: theme.spacing(2),\n color: (theme.vars || theme).palette.text.secondary,\n textAlign: 'left',\n captionSide: 'bottom'\n })\n}, ownerState.stickyHeader && {\n borderCollapse: 'separate'\n}));\nconst defaultComponent = 'table';\nconst Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTable'\n });\n const {\n className,\n component = defaultComponent,\n padding = 'normal',\n size = 'medium',\n stickyHeader = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n padding,\n size,\n stickyHeader\n });\n const classes = useUtilityClasses(ownerState);\n const table = React.useMemo(() => ({\n padding,\n size,\n stickyHeader\n }), [padding, size, stickyHeader]);\n return /*#__PURE__*/_jsx(TableContext.Provider, {\n value: table,\n children: /*#__PURE__*/_jsx(TableRoot, _extends({\n as: component,\n role: component === defaultComponent ? null : 'table',\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the table, normally `TableHead` and `TableBody`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Allows TableCells to inherit padding of the Table.\n * @default 'normal'\n */\n padding: PropTypes.oneOf(['checkbox', 'none', 'normal']),\n /**\n * Allows TableCells to inherit size of the Table.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * Set the header sticky.\n *\n * ⚠️ It doesn't work with IE11.\n * @default false\n */\n stickyHeader: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Table;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TableContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n TableContext.displayName = 'TableContext';\n}\nexport default TableContext;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst Tablelvl2Context = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\nexport default Tablelvl2Context;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableBodyUtilityClass(slot) {\n return generateUtilityClass('MuiTableBody', slot);\n}\nconst tableBodyClasses = generateUtilityClasses('MuiTableBody', ['root']);\nexport default tableBodyClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableBodyUtilityClass } from './tableBodyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTableBodyUtilityClass, classes);\n};\nconst TableBodyRoot = styled('tbody', {\n name: 'MuiTableBody',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'table-row-group'\n});\nconst tablelvl2 = {\n variant: 'body'\n};\nconst defaultComponent = 'tbody';\nconst TableBody = /*#__PURE__*/React.forwardRef(function TableBody(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableBody'\n });\n const {\n className,\n component = defaultComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(Tablelvl2Context.Provider, {\n value: tablelvl2,\n children: /*#__PURE__*/_jsx(TableBodyRoot, _extends({\n className: clsx(classes.root, className),\n as: component,\n ref: ref,\n role: component === defaultComponent ? null : 'rowgroup',\n ownerState: ownerState\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `TableRow`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableBody;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"padding\", \"scope\", \"size\", \"sortDirection\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { darken, alpha, lighten } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport TableContext from '../Table/TableContext';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport tableCellClasses, { getTableCellUtilityClass } from './tableCellClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n align,\n padding,\n size,\n stickyHeader\n } = ownerState;\n const slots = {\n root: ['root', variant, stickyHeader && 'stickyHeader', align !== 'inherit' && `align${capitalize(align)}`, padding !== 'normal' && `padding${capitalize(padding)}`, `size${capitalize(size)}`]\n };\n return composeClasses(slots, getTableCellUtilityClass, classes);\n};\nconst TableCellRoot = styled('td', {\n name: 'MuiTableCell',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.padding !== 'normal' && styles[`padding${capitalize(ownerState.padding)}`], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles.stickyHeader];\n }\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body2, {\n display: 'table-cell',\n verticalAlign: 'inherit',\n // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid\n ${theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,\n textAlign: 'left',\n padding: 16\n}, ownerState.variant === 'head' && {\n color: (theme.vars || theme).palette.text.primary,\n lineHeight: theme.typography.pxToRem(24),\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.variant === 'body' && {\n color: (theme.vars || theme).palette.text.primary\n}, ownerState.variant === 'footer' && {\n color: (theme.vars || theme).palette.text.secondary,\n lineHeight: theme.typography.pxToRem(21),\n fontSize: theme.typography.pxToRem(12)\n}, ownerState.size === 'small' && {\n padding: '6px 16px',\n [`&.${tableCellClasses.paddingCheckbox}`]: {\n width: 24,\n // prevent the checkbox column from growing\n padding: '0 12px 0 16px',\n '& > *': {\n padding: 0\n }\n }\n}, ownerState.padding === 'checkbox' && {\n width: 48,\n // prevent the checkbox column from growing\n padding: '0 0 0 4px'\n}, ownerState.padding === 'none' && {\n padding: 0\n}, ownerState.align === 'left' && {\n textAlign: 'left'\n}, ownerState.align === 'center' && {\n textAlign: 'center'\n}, ownerState.align === 'right' && {\n textAlign: 'right',\n flexDirection: 'row-reverse'\n}, ownerState.align === 'justify' && {\n textAlign: 'justify'\n}, ownerState.stickyHeader && {\n position: 'sticky',\n top: 0,\n zIndex: 2,\n backgroundColor: (theme.vars || theme).palette.background.default\n}));\n\n/**\n * The component renders a `
` element when the parent context is a header\n * or otherwise a `
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","spacingUtils","_ref","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","newKey","setNewKey","_useState3","_useState4","newLabel","setNewLabel","_useState5","_useState6","isSending","setIsSending","_jsx","ModalWrapper","title","onClose","titleIcon","AddNewTagIcon","children","_jsxs","Grid","container","className","spacerBottom","item","xs","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","Button","type","variant","onClick","color","disabled","trim","newTag","newTagList","api","buckets","putBucketTags","tags","then","catch","error","setModalErrorSnackMessage","errorToHandler","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","size","disableFocusRipple","disableRipple","disableTouchRipple","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","FormControlContext","undefined","formControlState","states","muiFormControl","reduce","acc","state","useFormControl","_excluded","FormLabelRoot","styled","slot","overridesResolver","styles","ownerState","_extends","root","colorSecondary","filled","_ref2","_extends2","vars","palette","text","secondary","typography","body1","lineHeight","padding","_defineProperty","formLabelClasses","focused","main","AsteriskComponent","asterisk","_ref3","FormLabel","inProps","ref","useThemeProps","_props$component","component","other","_objectWithoutPropertiesLoose","fcs","slots","capitalize","composeClasses","getFormLabelUtilityClasses","useUtilityClasses","as","generateUtilityClass","generateUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","sizeSmall","shrink","disableAnimation","animated","display","transformOrigin","whiteSpace","overflow","textOverflow","left","transform","transition","transitions","create","duration","shorter","easing","easeOut","zIndex","pointerEvents","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2486.1ecaac74.chunk.js.map b/portal-ui/build/static/js/2486.1ecaac74.chunk.js.map
deleted file mode 100644
index b6332630f..000000000
--- a/portal-ui/build/static/js/2486.1ecaac74.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2486.1ecaac74.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CommentBoxWrapper/CommentBoxWrapper.tsx","screens/Console/EventDestinations/CustomForms/ConfMySql.tsx","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Grid, InputLabel, TextField, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CommentBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: 14,\n margin: 0,\n alignItems: \"flex-start\",\n paddingTop: \"20px\",\n flexWrap: \"wrap\",\n display: \"flex\",\n },\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n cssOutlinedInput: {\n borderColor: \"#EAEAEA\",\n padding: 16,\n },\n rootContainer: {\n \"& .MuiOutlinedInput-inputMultiline\": {\n ...fieldBasic.inputLabel,\n fontSize: 13,\n minHeight: 150,\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#07193E\",\n borderWidth: 1,\n },\n \"& textarea\": {\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n \"&:placeholder\": {\n color: \"#858585\",\n opacity: 1,\n fontWeight: 400,\n },\n },\n },\n });\n\nconst CommentBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n classes,\n}: CommentBoxProps) => {\n let inputProps: any = { \"data-index\": index };\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n\n
\n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(CommentBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IElementValue } from \"../../Configurations/types\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport CommentBoxWrapper from \"../../Common/FormComponents/CommentBoxWrapper/CommentBoxWrapper\";\nimport { Switch, InputBox, Grid, Box, ReadBox, RadioGroup } from \"mds\";\n\ninterface IConfMySqlProps {\n onChange: (newValue: IElementValue[]) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst ConfMySql = ({ onChange, classes }: IConfMySqlProps) => {\n //Local States\n const [useDsnString, setUseDsnString] = useState(false);\n const [dsnString, setDsnString] = useState(\"\");\n const [host, setHostname] = useState(\"\");\n const [dbName, setDbName] = useState(\"\");\n const [port, setPort] = useState(\"\");\n const [user, setUser] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n\n const [table, setTable] = useState(\"\");\n const [format, setFormat] = useState(\"namespace\");\n const [queueDir, setQueueDir] = useState(\"\");\n const [queueLimit, setQueueLimit] = useState(\"\");\n const [comment, setComment] = useState(\"\");\n\n // dsn_string* (string) MySQL data-source-name connection string e.g. \"