From 534f3ec6276b8d364b69c3ac5ad20efec8315ff4 Mon Sep 17 00:00:00 2001
From: Alex <33497058+bexsoft@users.noreply.github.com>
Date: Wed, 11 Jan 2023 17:20:05 -0600
Subject: [PATCH] Release v0.22.5 (#2568)
---
.../base/console-deployment.yaml | 2 +-
.../standalone/console-deployment.yaml | 2 +-
portal-ui/build/asset-manifest.json | 530 +++++++++---------
portal-ui/build/index.html | 2 +-
...33cf.chunk.css => 1275.8bbdd881.chunk.css} | 2 +-
...nk.css.map => 1275.8bbdd881.chunk.css.map} | 2 +-
...33cf.chunk.css => 1367.8bbdd881.chunk.css} | 2 +-
...nk.css.map => 1367.8bbdd881.chunk.css.map} | 2 +-
...33cf.chunk.css => 1507.8bbdd881.chunk.css} | 2 +-
...nk.css.map => 1507.8bbdd881.chunk.css.map} | 2 +-
...33cf.chunk.css => 2797.8bbdd881.chunk.css} | 2 +-
...nk.css.map => 2797.8bbdd881.chunk.css.map} | 2 +-
...c33cf.chunk.css => 343.8bbdd881.chunk.css} | 2 +-
...unk.css.map => 343.8bbdd881.chunk.css.map} | 2 +-
.../build/static/css/3549.8bbdd881.chunk.css | 2 +
.../static/css/3549.8bbdd881.chunk.css.map | 1 +
.../build/static/css/3549.e99c33cf.chunk.css | 2 -
.../static/css/3549.e99c33cf.chunk.css.map | 1 -
.../build/static/css/3905.8bbdd881.chunk.css | 2 +
.../static/css/3905.8bbdd881.chunk.css.map | 1 +
.../build/static/css/5503.8bbdd881.chunk.css | 2 +
.../static/css/5503.8bbdd881.chunk.css.map | 1 +
.../build/static/css/5503.e99c33cf.chunk.css | 2 -
.../static/css/5503.e99c33cf.chunk.css.map | 1 -
.../build/static/css/5517.8bbdd881.chunk.css | 2 +
.../static/css/5517.8bbdd881.chunk.css.map | 1 +
.../build/static/css/5517.e99c33cf.chunk.css | 2 -
.../static/css/5517.e99c33cf.chunk.css.map | 1 -
.../build/static/css/6995.8bbdd881.chunk.css | 2 +
.../static/css/6995.8bbdd881.chunk.css.map | 1 +
.../build/static/css/6995.e99c33cf.chunk.css | 2 -
.../static/css/6995.e99c33cf.chunk.css.map | 1 -
.../build/static/css/9682.8bbdd881.chunk.css | 2 +
.../static/css/9682.8bbdd881.chunk.css.map | 1 +
.../build/static/css/9682.e99c33cf.chunk.css | 2 -
.../static/css/9682.e99c33cf.chunk.css.map | 1 -
portal-ui/build/static/css/main.7c092a9d.css | 2 +
.../build/static/css/main.7c092a9d.css.map | 1 +
portal-ui/build/static/css/main.b20a708b.css | 2 -
.../build/static/css/main.b20a708b.css.map | 1 -
.../build/static/js/1030.0c362d0c.chunk.js | 2 -
.../static/js/1030.0c362d0c.chunk.js.map | 1 -
.../build/static/js/1030.39fd7796.chunk.js | 2 +
.../static/js/1030.39fd7796.chunk.js.map | 1 +
.../build/static/js/1275.1d84ee6a.chunk.js | 2 +
.../static/js/1275.1d84ee6a.chunk.js.map | 1 +
.../build/static/js/1275.3857a963.chunk.js | 2 -
.../static/js/1275.3857a963.chunk.js.map | 1 -
.../build/static/js/1367.7ad56d1c.chunk.js | 2 +
.../static/js/1367.7ad56d1c.chunk.js.map | 1 +
.../build/static/js/1367.e7a5805d.chunk.js | 2 -
.../static/js/1367.e7a5805d.chunk.js.map | 1 -
.../build/static/js/1440.8750dde4.chunk.js | 2 -
.../static/js/1440.8750dde4.chunk.js.map | 1 -
.../build/static/js/1440.b5fbee60.chunk.js | 2 +
.../static/js/1440.b5fbee60.chunk.js.map | 1 +
.../build/static/js/1501.2b23a1c6.chunk.js | 2 -
.../static/js/1501.2b23a1c6.chunk.js.map | 1 -
.../build/static/js/1501.e543ab00.chunk.js | 2 +
.../static/js/1501.e543ab00.chunk.js.map | 1 +
.../build/static/js/1507.979cb39c.chunk.js | 2 +
.../static/js/1507.979cb39c.chunk.js.map | 1 +
.../build/static/js/1507.a4807651.chunk.js | 2 -
.../static/js/1507.a4807651.chunk.js.map | 1 -
.../build/static/js/1581.16dc83a0.chunk.js | 2 +
.../static/js/1581.16dc83a0.chunk.js.map | 1 +
.../build/static/js/1581.6892440d.chunk.js | 2 -
.../static/js/1581.6892440d.chunk.js.map | 1 -
.../build/static/js/1604.6758414b.chunk.js | 2 +
.../static/js/1604.6758414b.chunk.js.map | 1 +
.../build/static/js/1604.816d8ab5.chunk.js | 2 -
.../static/js/1604.816d8ab5.chunk.js.map | 1 -
.../build/static/js/1705.3ecc6022.chunk.js | 2 +
.../static/js/1705.3ecc6022.chunk.js.map | 1 +
.../build/static/js/1705.88e02e9a.chunk.js | 2 -
.../static/js/1705.88e02e9a.chunk.js.map | 1 -
...996f85.chunk.js => 1799.b4e6b095.chunk.js} | 4 +-
...hunk.js.map => 1799.b4e6b095.chunk.js.map} | 2 +-
.../build/static/js/1829.dddf5fc0.chunk.js | 2 -
.../static/js/1829.dddf5fc0.chunk.js.map | 1 -
.../build/static/js/1829.ebfd458a.chunk.js | 2 +
.../static/js/1829.ebfd458a.chunk.js.map | 1 +
.../build/static/js/2032.4598ddc6.chunk.js | 2 +
.../static/js/2032.4598ddc6.chunk.js.map | 1 +
...5537ec.chunk.js => 2112.1820b142.chunk.js} | 4 +-
.../static/js/2112.1820b142.chunk.js.map | 1 +
.../static/js/2112.c85537ec.chunk.js.map | 1 -
.../build/static/js/2180.26a5c38b.chunk.js | 2 -
.../static/js/2180.26a5c38b.chunk.js.map | 1 -
.../build/static/js/2180.dc0f648b.chunk.js | 2 +
.../static/js/2180.dc0f648b.chunk.js.map | 1 +
.../build/static/js/2185.9f8ebee0.chunk.js | 2 +
.../static/js/2185.9f8ebee0.chunk.js.map | 1 +
.../build/static/js/2185.b77a9469.chunk.js | 2 -
.../static/js/2185.b77a9469.chunk.js.map | 1 -
.../build/static/js/2338.0f7ba0f5.chunk.js | 2 -
.../build/static/js/2338.d265a623.chunk.js | 2 +
...hunk.js.map => 2338.d265a623.chunk.js.map} | 2 +-
.../static/js/2408.4f7b17cd.chunk.js.map | 1 -
...7b17cd.chunk.js => 2408.b23e320f.chunk.js} | 4 +-
.../static/js/2408.b23e320f.chunk.js.map | 1 +
.../build/static/js/247.37adf47a.chunk.js | 2 +
.../build/static/js/247.37adf47a.chunk.js.map | 1 +
.../build/static/js/247.f860e311.chunk.js | 2 -
.../build/static/js/247.f860e311.chunk.js.map | 1 -
.../build/static/js/2516.6c64276a.chunk.js | 2 +
...hunk.js.map => 2516.6c64276a.chunk.js.map} | 2 +-
.../build/static/js/2516.c5c34c4d.chunk.js | 2 -
.../build/static/js/2555.acd8bfbf.chunk.js | 2 -
.../static/js/2555.acd8bfbf.chunk.js.map | 1 -
.../build/static/js/2555.da84d5ce.chunk.js | 2 +
.../static/js/2555.da84d5ce.chunk.js.map | 1 +
.../build/static/js/2637.a78c67b6.chunk.js | 2 -
.../static/js/2637.a78c67b6.chunk.js.map | 1 -
.../build/static/js/2637.a7bb7b5b.chunk.js | 2 +
.../static/js/2637.a7bb7b5b.chunk.js.map | 1 +
.../build/static/js/2661.af7d8b4d.chunk.js | 2 +
.../static/js/2661.af7d8b4d.chunk.js.map | 1 +
.../build/static/js/2661.ec609143.chunk.js | 2 -
.../static/js/2661.ec609143.chunk.js.map | 1 -
.../build/static/js/2684.03e0baba.chunk.js | 2 -
.../static/js/2684.03e0baba.chunk.js.map | 1 -
.../build/static/js/2684.73fcefda.chunk.js | 2 +
.../static/js/2684.73fcefda.chunk.js.map | 1 +
.../build/static/js/2763.0e8b50c7.chunk.js | 2 -
.../build/static/js/2763.7c4fb5a0.chunk.js | 2 +
...hunk.js.map => 2763.7c4fb5a0.chunk.js.map} | 2 +-
.../build/static/js/2797.69df7d1d.chunk.js | 2 -
.../static/js/2797.69df7d1d.chunk.js.map | 1 -
.../build/static/js/2797.6dae3357.chunk.js | 2 +
.../static/js/2797.6dae3357.chunk.js.map | 1 +
.../build/static/js/2878.1330cf42.chunk.js | 2 -
.../static/js/2878.1330cf42.chunk.js.map | 1 -
.../build/static/js/2878.6ecef4ed.chunk.js | 2 +
.../static/js/2878.6ecef4ed.chunk.js.map | 1 +
.../build/static/js/2949.2cc2d873.chunk.js | 2 -
.../static/js/2949.2cc2d873.chunk.js.map | 1 -
.../build/static/js/2949.7c1ea98c.chunk.js | 2 +
.../static/js/2949.7c1ea98c.chunk.js.map | 1 +
.../build/static/js/2983.66d9f91c.chunk.js | 2 -
.../build/static/js/2983.ca089e19.chunk.js | 2 +
...hunk.js.map => 2983.ca089e19.chunk.js.map} | 2 +-
.../build/static/js/3034.eeaa9de7.chunk.js | 2 +
.../static/js/3034.eeaa9de7.chunk.js.map | 1 +
.../build/static/js/3061.12708207.chunk.js | 2 -
.../static/js/3061.12708207.chunk.js.map | 1 -
.../build/static/js/3061.ef8f8361.chunk.js | 2 +
.../static/js/3061.ef8f8361.chunk.js.map | 1 +
.../build/static/js/3097.b19643e9.chunk.js | 2 +
.../static/js/3097.b19643e9.chunk.js.map | 1 +
.../build/static/js/3097.c627671b.chunk.js | 2 -
.../static/js/3097.c627671b.chunk.js.map | 1 -
.../build/static/js/3115.da843172.chunk.js | 2 +
.../static/js/3115.da843172.chunk.js.map | 1 +
.../build/static/js/3119.1664ba97.chunk.js | 2 -
.../static/js/3119.1664ba97.chunk.js.map | 1 -
.../build/static/js/3119.e9b6547a.chunk.js | 2 +
.../static/js/3119.e9b6547a.chunk.js.map | 1 +
...70148c8.chunk.js => 312.1397c0a8.chunk.js} | 4 +-
.../build/static/js/312.1397c0a8.chunk.js.map | 1 +
.../build/static/js/312.770148c8.chunk.js.map | 1 -
.../build/static/js/3328.64f37bf8.chunk.js | 2 -
.../static/js/3328.64f37bf8.chunk.js.map | 1 -
.../build/static/js/343.08a3aa1e.chunk.js | 2 +
.../build/static/js/343.08a3aa1e.chunk.js.map | 1 +
.../build/static/js/343.0d456511.chunk.js | 2 -
.../build/static/js/343.0d456511.chunk.js.map | 1 -
.../build/static/js/3543.63b7961a.chunk.js | 2 -
.../static/js/3543.63b7961a.chunk.js.map | 1 -
.../build/static/js/3543.b27540db.chunk.js | 2 +
.../static/js/3543.b27540db.chunk.js.map | 1 +
.../build/static/js/3549.4d424641.chunk.js | 2 +
.../static/js/3549.4d424641.chunk.js.map | 1 +
.../build/static/js/3549.dbf06ae0.chunk.js | 2 -
.../static/js/3549.dbf06ae0.chunk.js.map | 1 -
.../build/static/js/3832.064838f9.chunk.js | 2 +
.../static/js/3832.064838f9.chunk.js.map | 1 +
.../build/static/js/3839.7de43728.chunk.js | 2 +
.../static/js/3839.7de43728.chunk.js.map | 1 +
.../build/static/js/3864.01198cc4.chunk.js | 2 +
.../static/js/3864.01198cc4.chunk.js.map | 1 +
.../build/static/js/3875.68ff4b06.chunk.js | 2 -
.../static/js/3875.68ff4b06.chunk.js.map | 1 -
.../build/static/js/3875.e4e37704.chunk.js | 2 +
.../static/js/3875.e4e37704.chunk.js.map | 1 +
.../build/static/js/3905.640266d7.chunk.js | 2 +
.../static/js/3905.640266d7.chunk.js.map | 1 +
...b98a64.chunk.js => 3956.802d6679.chunk.js} | 4 +-
.../static/js/3956.802d6679.chunk.js.map | 1 +
.../static/js/3956.81b98a64.chunk.js.map | 1 -
...6c69861.chunk.js => 402.2318f11d.chunk.js} | 4 +-
.../build/static/js/402.2318f11d.chunk.js.map | 1 +
.../build/static/js/402.46c69861.chunk.js.map | 1 -
...d6fdd4.chunk.js => 4021.b25d428e.chunk.js} | 6 +-
...txt => 4021.b25d428e.chunk.js.LICENSE.txt} | 0
...hunk.js.map => 4021.b25d428e.chunk.js.map} | 2 +-
.../build/static/js/4061.21163e18.chunk.js | 2 +
.../static/js/4061.21163e18.chunk.js.map | 1 +
.../build/static/js/4061.bc2708cb.chunk.js | 2 -
.../static/js/4061.bc2708cb.chunk.js.map | 1 -
.../build/static/js/4131.498b212f.chunk.js | 2 -
.../static/js/4131.498b212f.chunk.js.map | 1 -
.../build/static/js/4131.fb6eaf02.chunk.js | 2 +
.../static/js/4131.fb6eaf02.chunk.js.map | 1 +
.../build/static/js/4133.4da17d39.chunk.js | 2 -
.../static/js/4133.4da17d39.chunk.js.map | 1 -
.../build/static/js/4133.fff44ab1.chunk.js | 2 +
.../static/js/4133.fff44ab1.chunk.js.map | 1 +
.../build/static/js/4209.06b0245b.chunk.js | 2 +
.../static/js/4209.06b0245b.chunk.js.map | 1 +
.../build/static/js/4209.d713bd2e.chunk.js | 2 -
.../static/js/4209.d713bd2e.chunk.js.map | 1 -
.../build/static/js/4335.e38511e4.chunk.js | 2 -
.../static/js/4335.e38511e4.chunk.js.map | 1 -
.../build/static/js/4335.fe71a24c.chunk.js | 2 +
.../static/js/4335.fe71a24c.chunk.js.map | 1 +
.../build/static/js/4414.8d9d85ec.chunk.js | 2 -
.../static/js/4414.8d9d85ec.chunk.js.map | 1 -
.../build/static/js/4414.ff3ede37.chunk.js | 2 +
.../static/js/4414.ff3ede37.chunk.js.map | 1 +
.../build/static/js/4455.93668d49.chunk.js | 2 +
...hunk.js.map => 4455.93668d49.chunk.js.map} | 2 +-
.../build/static/js/4455.aceaa0c6.chunk.js | 2 -
...b142906.chunk.js => 455.1ab65317.chunk.js} | 4 +-
.../build/static/js/455.1ab65317.chunk.js.map | 1 +
.../build/static/js/455.4b142906.chunk.js.map | 1 -
.../build/static/js/4619.1abcedba.chunk.js | 2 -
.../static/js/4619.1abcedba.chunk.js.map | 1 -
.../build/static/js/4619.beba8be5.chunk.js | 2 +
.../static/js/4619.beba8be5.chunk.js.map | 1 +
.../build/static/js/4672.a4d46683.chunk.js | 2 -
.../static/js/4672.a4d46683.chunk.js.map | 1 -
.../build/static/js/4672.df68fa8d.chunk.js | 2 +
.../static/js/4672.df68fa8d.chunk.js.map | 1 +
.../build/static/js/4781.27325faf.chunk.js | 2 +
.../static/js/4781.27325faf.chunk.js.map | 1 +
.../build/static/js/4781.f4794912.chunk.js | 2 -
.../static/js/4781.f4794912.chunk.js.map | 1 -
.../build/static/js/483.6f698412.chunk.js | 2 +
.../build/static/js/483.6f698412.chunk.js.map | 1 +
.../build/static/js/483.f2287673.chunk.js | 2 -
.../build/static/js/483.f2287673.chunk.js.map | 1 -
.../build/static/js/4873.1840dbc4.chunk.js | 2 +
.../static/js/4873.1840dbc4.chunk.js.map | 1 +
.../build/static/js/4873.5bde9bed.chunk.js | 2 -
.../static/js/4873.5bde9bed.chunk.js.map | 1 -
.../build/static/js/4902.04f664fa.chunk.js | 2 +
.../static/js/4902.04f664fa.chunk.js.map | 1 +
.../build/static/js/4902.0ede76f0.chunk.js | 2 -
.../static/js/4902.0ede76f0.chunk.js.map | 1 -
.../build/static/js/5088.2a540e0f.chunk.js | 2 -
.../static/js/5088.2a540e0f.chunk.js.map | 1 -
.../build/static/js/5088.e2dea68b.chunk.js | 2 +
.../static/js/5088.e2dea68b.chunk.js.map | 1 +
.../build/static/js/51.19251cf7.chunk.js | 2 -
.../build/static/js/51.19251cf7.chunk.js.map | 1 -
.../build/static/js/51.ab1fa6c3.chunk.js | 2 +
.../build/static/js/51.ab1fa6c3.chunk.js.map | 1 +
.../build/static/js/5112.145171e2.chunk.js | 2 -
.../static/js/5112.145171e2.chunk.js.map | 1 -
.../build/static/js/5112.1e71afd4.chunk.js | 2 +
.../static/js/5112.1e71afd4.chunk.js.map | 1 +
.../build/static/js/5140.c3d0a706.chunk.js | 2 -
.../static/js/5140.c3d0a706.chunk.js.map | 1 -
.../build/static/js/5140.d55a77e3.chunk.js | 2 +
.../static/js/5140.d55a77e3.chunk.js.map | 1 +
...8fce49.chunk.js => 5223.d3ef0b66.chunk.js} | 4 +-
...hunk.js.map => 5223.d3ef0b66.chunk.js.map} | 2 +-
...c076fc.chunk.js => 5367.12b9d328.chunk.js} | 4 +-
...hunk.js.map => 5367.12b9d328.chunk.js.map} | 2 +-
.../build/static/js/537.561ba81d.chunk.js | 2 +
.../build/static/js/537.561ba81d.chunk.js.map | 1 +
.../build/static/js/537.ac3e6c1f.chunk.js | 2 -
.../build/static/js/537.ac3e6c1f.chunk.js.map | 1 -
.../build/static/js/5503.99647175.chunk.js | 2 +
.../static/js/5503.99647175.chunk.js.map | 1 +
.../build/static/js/5503.ede909ff.chunk.js | 2 -
.../static/js/5503.ede909ff.chunk.js.map | 1 -
.../build/static/js/5517.c01a8b7c.chunk.js | 2 +
.../static/js/5517.c01a8b7c.chunk.js.map | 1 +
.../build/static/js/5517.c2167d52.chunk.js | 2 -
.../static/js/5517.c2167d52.chunk.js.map | 1 -
.../build/static/js/5643.58815d0f.chunk.js | 2 +
.../static/js/5643.58815d0f.chunk.js.map | 1 +
.../build/static/js/5643.d7b117e6.chunk.js | 2 -
.../static/js/5643.d7b117e6.chunk.js.map | 1 -
.../build/static/js/5690.770e1ac1.chunk.js | 2 -
.../static/js/5690.770e1ac1.chunk.js.map | 1 -
.../build/static/js/583.7e06d8f7.chunk.js | 2 +
.../build/static/js/583.7e06d8f7.chunk.js.map | 1 +
.../build/static/js/5861.37a1f0f2.chunk.js | 2 +
.../static/js/5861.37a1f0f2.chunk.js.map | 1 +
.../build/static/js/5861.9b443eee.chunk.js | 2 -
.../static/js/5861.9b443eee.chunk.js.map | 1 -
.../build/static/js/5882.6b35beab.chunk.js | 2 -
.../static/js/5882.6b35beab.chunk.js.map | 1 -
.../build/static/js/5882.ad761d2c.chunk.js | 2 +
.../static/js/5882.ad761d2c.chunk.js.map | 1 +
.../static/js/5926.916c8233.chunk.js.map | 1 -
...6c8233.chunk.js => 5926.b3d18dd7.chunk.js} | 4 +-
.../static/js/5926.b3d18dd7.chunk.js.map | 1 +
...e721bd.chunk.js => 5995.686a9a3d.chunk.js} | 4 +-
.../static/js/5995.686a9a3d.chunk.js.map | 1 +
.../static/js/5995.aee721bd.chunk.js.map | 1 -
.../build/static/js/6040.c297c8b1.chunk.js | 2 -
.../static/js/6040.c297c8b1.chunk.js.map | 1 -
.../build/static/js/6040.e12da05d.chunk.js | 2 +
.../static/js/6040.e12da05d.chunk.js.map | 1 +
.../build/static/js/6137.7535bbb1.chunk.js | 2 +
...hunk.js.map => 6137.7535bbb1.chunk.js.map} | 2 +-
.../build/static/js/6137.90580e27.chunk.js | 2 -
.../build/static/js/6401.2d1d41e3.chunk.js | 2 -
.../static/js/6401.2d1d41e3.chunk.js.map | 1 -
.../build/static/js/6401.f5081a76.chunk.js | 2 +
.../static/js/6401.f5081a76.chunk.js.map | 1 +
.../build/static/js/6405.0e2d66a4.chunk.js | 2 -
.../static/js/6405.0e2d66a4.chunk.js.map | 1 -
.../build/static/js/6405.a17792e5.chunk.js | 2 +
.../static/js/6405.a17792e5.chunk.js.map | 1 +
.../build/static/js/6510.29948999.chunk.js | 2 -
.../static/js/6510.29948999.chunk.js.map | 1 -
.../build/static/js/6526.a725f558.chunk.js | 2 -
.../static/js/6526.a725f558.chunk.js.map | 1 -
.../build/static/js/6526.fb2e4acc.chunk.js | 2 +
.../static/js/6526.fb2e4acc.chunk.js.map | 1 +
.../build/static/js/6577.8452e067.chunk.js | 2 +
.../static/js/6577.8452e067.chunk.js.map | 1 +
.../build/static/js/6577.caaa5471.chunk.js | 2 -
.../static/js/6577.caaa5471.chunk.js.map | 1 -
.../build/static/js/6621.4eb56e28.chunk.js | 2 +
.../static/js/6621.4eb56e28.chunk.js.map | 1 +
.../build/static/js/6763.d2f4f7b7.chunk.js | 2 -
.../static/js/6763.d2f4f7b7.chunk.js.map | 1 -
.../build/static/js/6895.8d73d55a.chunk.js | 2 -
.../static/js/6895.8d73d55a.chunk.js.map | 1 -
.../build/static/js/6895.d8bf854d.chunk.js | 2 +
.../static/js/6895.d8bf854d.chunk.js.map | 1 +
.../build/static/js/6901.9c779e6d.chunk.js | 2 +
.../static/js/6901.9c779e6d.chunk.js.map | 1 +
.../build/static/js/6901.d43d56e6.chunk.js | 2 -
.../static/js/6901.d43d56e6.chunk.js.map | 1 -
...367537.chunk.js => 6914.9cc3ab4e.chunk.js} | 4 +-
...hunk.js.map => 6914.9cc3ab4e.chunk.js.map} | 2 +-
.../build/static/js/692.6c4b6abb.chunk.js | 2 -
.../build/static/js/692.6c4b6abb.chunk.js.map | 1 -
.../build/static/js/692.aa4b543f.chunk.js | 2 +
.../build/static/js/692.aa4b543f.chunk.js.map | 1 +
.../build/static/js/6995.5b180444.chunk.js | 2 +
.../static/js/6995.5b180444.chunk.js.map | 1 +
.../build/static/js/6995.b765bc2f.chunk.js | 2 -
.../static/js/6995.b765bc2f.chunk.js.map | 1 -
.../build/static/js/701.c1e0e69c.chunk.js | 2 -
.../build/static/js/701.c438988e.chunk.js | 2 +
...chunk.js.map => 701.c438988e.chunk.js.map} | 2 +-
.../build/static/js/7021.35a1212b.chunk.js | 2 +
.../static/js/7021.35a1212b.chunk.js.map | 1 +
.../build/static/js/7021.cbf7f23a.chunk.js | 2 -
.../static/js/7021.cbf7f23a.chunk.js.map | 1 -
.../build/static/js/7092.98cb7d30.chunk.js | 2 -
.../static/js/7092.98cb7d30.chunk.js.map | 1 -
.../build/static/js/711.c9f818ab.chunk.js.map | 1 -
...9f818ab.chunk.js => 711.fbbd2d52.chunk.js} | 4 +-
.../build/static/js/711.fbbd2d52.chunk.js.map | 1 +
.../build/static/js/7164.3762a0c0.chunk.js | 2 -
.../static/js/7164.3762a0c0.chunk.js.map | 1 -
.../build/static/js/7164.ca69b510.chunk.js | 2 +
.../static/js/7164.ca69b510.chunk.js.map | 1 +
.../static/js/7295.acbcda52.chunk.js.map | 1 -
...bcda52.chunk.js => 7295.cfd1690b.chunk.js} | 4 +-
.../static/js/7295.cfd1690b.chunk.js.map | 1 +
.../build/static/js/7585.22a36735.chunk.js | 2 -
.../static/js/7585.22a36735.chunk.js.map | 1 -
.../build/static/js/7585.ab5a26e5.chunk.js | 2 +
.../static/js/7585.ab5a26e5.chunk.js.map | 1 +
.../build/static/js/7770.611c18cd.chunk.js | 2 +
.../static/js/7770.611c18cd.chunk.js.map | 1 +
.../build/static/js/7770.a8aef98b.chunk.js | 2 -
.../static/js/7770.a8aef98b.chunk.js.map | 1 -
.../build/static/js/7798.88e1551b.chunk.js | 2 -
.../static/js/7798.88e1551b.chunk.js.map | 1 -
.../build/static/js/7798.d6a28f0f.chunk.js | 2 +
.../static/js/7798.d6a28f0f.chunk.js.map | 1 +
...9a6564.chunk.js => 7847.7319336d.chunk.js} | 4 +-
.../static/js/7847.7319336d.chunk.js.map | 1 +
.../static/js/7847.e49a6564.chunk.js.map | 1 -
.../build/static/js/7873.0f0682a9.chunk.js | 2 -
.../static/js/7873.0f0682a9.chunk.js.map | 1 -
.../build/static/js/7873.7374a5f3.chunk.js | 2 +
.../static/js/7873.7374a5f3.chunk.js.map | 1 +
.../build/static/js/7893.f547add4.chunk.js | 2 +
.../static/js/7893.f547add4.chunk.js.map | 1 +
.../build/static/js/8277.78032a3f.chunk.js | 2 -
.../static/js/8277.78032a3f.chunk.js.map | 1 -
...17d087.chunk.js => 8350.70bb0791.chunk.js} | 4 +-
...hunk.js.map => 8350.70bb0791.chunk.js.map} | 2 +-
.../build/static/js/8360.19c25a88.chunk.js | 2 -
.../static/js/8360.19c25a88.chunk.js.map | 1 -
.../build/static/js/8360.c87a8251.chunk.js | 2 +
.../static/js/8360.c87a8251.chunk.js.map | 1 +
.../build/static/js/8391.875d2320.chunk.js | 2 -
.../static/js/8391.875d2320.chunk.js.map | 1 -
.../build/static/js/8455.416190cd.chunk.js | 2 +
.../static/js/8455.416190cd.chunk.js.map | 1 +
.../build/static/js/8455.5db6563b.chunk.js | 2 -
.../static/js/8455.5db6563b.chunk.js.map | 1 -
.../build/static/js/8626.198c0509.chunk.js | 2 -
.../static/js/8626.198c0509.chunk.js.map | 1 -
.../build/static/js/8626.d4b77c9f.chunk.js | 2 +
.../static/js/8626.d4b77c9f.chunk.js.map | 1 +
.../build/static/js/8725.7ed02e0c.chunk.js | 2 +
.../static/js/8725.7ed02e0c.chunk.js.map | 1 +
.../build/static/js/8833.6d5381bf.chunk.js | 2 +
.../static/js/8833.6d5381bf.chunk.js.map | 1 +
.../build/static/js/8833.cc57fe33.chunk.js | 2 -
.../static/js/8833.cc57fe33.chunk.js.map | 1 -
.../build/static/js/889.bba47c51.chunk.js | 2 -
.../build/static/js/889.bba47c51.chunk.js.map | 1 -
.../build/static/js/889.bc3ac140.chunk.js | 2 +
.../build/static/js/889.bc3ac140.chunk.js.map | 1 +
...ddf273.chunk.js => 8896.aa552ac4.chunk.js} | 4 +-
.../static/js/8896.aa552ac4.chunk.js.map | 1 +
...806e82.chunk.js => 8990.9cbc5e71.chunk.js} | 4 +-
...hunk.js.map => 8990.9cbc5e71.chunk.js.map} | 2 +-
.../build/static/js/8998.6d51ddf2.chunk.js | 2 -
.../static/js/8998.6d51ddf2.chunk.js.map | 1 -
.../build/static/js/8998.a5f0b2dc.chunk.js | 2 +
.../static/js/8998.a5f0b2dc.chunk.js.map | 1 +
.../static/js/9031.d8ddf273.chunk.js.map | 1 -
.../static/js/9088.17f4cb12.chunk.js.map | 1 -
...f4cb12.chunk.js => 9088.89fcd230.chunk.js} | 4 +-
.../static/js/9088.89fcd230.chunk.js.map | 1 +
...72a7f7.chunk.js => 9134.764884d7.chunk.js} | 4 +-
...hunk.js.map => 9134.764884d7.chunk.js.map} | 2 +-
.../static/js/9145.77b06f48.chunk.js.map | 1 -
...b06f48.chunk.js => 9145.b61c5e46.chunk.js} | 4 +-
.../static/js/9145.b61c5e46.chunk.js.map | 1 +
.../build/static/js/9179.26f8387f.chunk.js | 2 -
.../static/js/9179.26f8387f.chunk.js.map | 1 -
.../build/static/js/9179.962d592f.chunk.js | 2 +
.../static/js/9179.962d592f.chunk.js.map | 1 +
.../build/static/js/9221.38a31de2.chunk.js | 2 -
.../build/static/js/9221.b78f1e48.chunk.js | 2 +
...hunk.js.map => 9221.b78f1e48.chunk.js.map} | 2 +-
.../build/static/js/9251.a9e6e404.chunk.js | 2 +
.../static/js/9251.a9e6e404.chunk.js.map | 1 +
...a667e5.chunk.js => 9297.ab07c841.chunk.js} | 4 +-
...hunk.js.map => 9297.ab07c841.chunk.js.map} | 2 +-
.../build/static/js/9467.0ba82b58.chunk.js | 2 -
.../static/js/9467.0ba82b58.chunk.js.map | 1 -
.../build/static/js/9467.5eac6111.chunk.js | 2 +
.../static/js/9467.5eac6111.chunk.js.map | 1 +
.../build/static/js/9478.6a568948.chunk.js | 2 +
.../static/js/9478.6a568948.chunk.js.map | 1 +
.../build/static/js/9478.b1688b00.chunk.js | 2 -
.../static/js/9478.b1688b00.chunk.js.map | 1 -
...6938ca.chunk.js => 9611.7f153cb9.chunk.js} | 4 +-
...hunk.js.map => 9611.7f153cb9.chunk.js.map} | 2 +-
.../build/static/js/9682.5c31e74c.chunk.js | 2 -
.../static/js/9682.5c31e74c.chunk.js.map | 1 -
.../build/static/js/9682.bf1d4c51.chunk.js | 2 +
.../static/js/9682.bf1d4c51.chunk.js.map | 1 +
.../build/static/js/977.1d5d246f.chunk.js | 2 +
.../build/static/js/977.1d5d246f.chunk.js.map | 1 +
.../build/static/js/9779.4f8ac570.chunk.js | 2 +
.../static/js/9779.4f8ac570.chunk.js.map | 1 +
.../build/static/js/9779.6d822fe6.chunk.js | 2 -
.../static/js/9779.6d822fe6.chunk.js.map | 1 -
.../build/static/js/9918.80f0bfbe.chunk.js | 2 +
.../static/js/9918.80f0bfbe.chunk.js.map | 1 +
.../build/static/js/9952.5ed9b96a.chunk.js | 2 +
.../static/js/9952.5ed9b96a.chunk.js.map | 1 +
...de9579.chunk.js => 9968.6da000eb.chunk.js} | 4 +-
.../static/js/9968.6da000eb.chunk.js.map | 1 +
.../static/js/9968.8cde9579.chunk.js.map | 1 -
portal-ui/build/static/js/main.c7a9c285.js | 3 +
...CENSE.txt => main.c7a9c285.js.LICENSE.txt} | 0
.../build/static/js/main.c7a9c285.js.map | 1 +
portal-ui/build/static/js/main.e02e3a76.js | 3 -
.../build/static/js/main.e02e3a76.js.map | 1 -
479 files changed, 682 insertions(+), 637 deletions(-)
rename portal-ui/build/static/css/{1275.e99c33cf.chunk.css => 1275.8bbdd881.chunk.css} (99%)
rename portal-ui/build/static/css/{1507.e99c33cf.chunk.css.map => 1275.8bbdd881.chunk.css.map} (99%)
rename portal-ui/build/static/css/{1507.e99c33cf.chunk.css => 1367.8bbdd881.chunk.css} (99%)
rename portal-ui/build/static/css/{1275.e99c33cf.chunk.css.map => 1367.8bbdd881.chunk.css.map} (99%)
rename portal-ui/build/static/css/{1367.e99c33cf.chunk.css => 1507.8bbdd881.chunk.css} (99%)
rename portal-ui/build/static/css/{2797.e99c33cf.chunk.css.map => 1507.8bbdd881.chunk.css.map} (99%)
rename portal-ui/build/static/css/{2797.e99c33cf.chunk.css => 2797.8bbdd881.chunk.css} (99%)
rename portal-ui/build/static/css/{1367.e99c33cf.chunk.css.map => 2797.8bbdd881.chunk.css.map} (99%)
rename portal-ui/build/static/css/{343.e99c33cf.chunk.css => 343.8bbdd881.chunk.css} (99%)
rename portal-ui/build/static/css/{343.e99c33cf.chunk.css.map => 343.8bbdd881.chunk.css.map} (99%)
create mode 100644 portal-ui/build/static/css/3549.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/3549.8bbdd881.chunk.css.map
delete mode 100644 portal-ui/build/static/css/3549.e99c33cf.chunk.css
delete mode 100644 portal-ui/build/static/css/3549.e99c33cf.chunk.css.map
create mode 100644 portal-ui/build/static/css/3905.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/3905.8bbdd881.chunk.css.map
create mode 100644 portal-ui/build/static/css/5503.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/5503.8bbdd881.chunk.css.map
delete mode 100644 portal-ui/build/static/css/5503.e99c33cf.chunk.css
delete mode 100644 portal-ui/build/static/css/5503.e99c33cf.chunk.css.map
create mode 100644 portal-ui/build/static/css/5517.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/5517.8bbdd881.chunk.css.map
delete mode 100644 portal-ui/build/static/css/5517.e99c33cf.chunk.css
delete mode 100644 portal-ui/build/static/css/5517.e99c33cf.chunk.css.map
create mode 100644 portal-ui/build/static/css/6995.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/6995.8bbdd881.chunk.css.map
delete mode 100644 portal-ui/build/static/css/6995.e99c33cf.chunk.css
delete mode 100644 portal-ui/build/static/css/6995.e99c33cf.chunk.css.map
create mode 100644 portal-ui/build/static/css/9682.8bbdd881.chunk.css
create mode 100644 portal-ui/build/static/css/9682.8bbdd881.chunk.css.map
delete mode 100644 portal-ui/build/static/css/9682.e99c33cf.chunk.css
delete mode 100644 portal-ui/build/static/css/9682.e99c33cf.chunk.css.map
create mode 100644 portal-ui/build/static/css/main.7c092a9d.css
create mode 100644 portal-ui/build/static/css/main.7c092a9d.css.map
delete mode 100644 portal-ui/build/static/css/main.b20a708b.css
delete mode 100644 portal-ui/build/static/css/main.b20a708b.css.map
delete mode 100644 portal-ui/build/static/js/1030.0c362d0c.chunk.js
delete mode 100644 portal-ui/build/static/js/1030.0c362d0c.chunk.js.map
create mode 100644 portal-ui/build/static/js/1030.39fd7796.chunk.js
create mode 100644 portal-ui/build/static/js/1030.39fd7796.chunk.js.map
create mode 100644 portal-ui/build/static/js/1275.1d84ee6a.chunk.js
create mode 100644 portal-ui/build/static/js/1275.1d84ee6a.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1275.3857a963.chunk.js
delete mode 100644 portal-ui/build/static/js/1275.3857a963.chunk.js.map
create mode 100644 portal-ui/build/static/js/1367.7ad56d1c.chunk.js
create mode 100644 portal-ui/build/static/js/1367.7ad56d1c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1367.e7a5805d.chunk.js
delete mode 100644 portal-ui/build/static/js/1367.e7a5805d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1440.8750dde4.chunk.js
delete mode 100644 portal-ui/build/static/js/1440.8750dde4.chunk.js.map
create mode 100644 portal-ui/build/static/js/1440.b5fbee60.chunk.js
create mode 100644 portal-ui/build/static/js/1440.b5fbee60.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1501.2b23a1c6.chunk.js
delete mode 100644 portal-ui/build/static/js/1501.2b23a1c6.chunk.js.map
create mode 100644 portal-ui/build/static/js/1501.e543ab00.chunk.js
create mode 100644 portal-ui/build/static/js/1501.e543ab00.chunk.js.map
create mode 100644 portal-ui/build/static/js/1507.979cb39c.chunk.js
create mode 100644 portal-ui/build/static/js/1507.979cb39c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1507.a4807651.chunk.js
delete mode 100644 portal-ui/build/static/js/1507.a4807651.chunk.js.map
create mode 100644 portal-ui/build/static/js/1581.16dc83a0.chunk.js
create mode 100644 portal-ui/build/static/js/1581.16dc83a0.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1581.6892440d.chunk.js
delete mode 100644 portal-ui/build/static/js/1581.6892440d.chunk.js.map
create mode 100644 portal-ui/build/static/js/1604.6758414b.chunk.js
create mode 100644 portal-ui/build/static/js/1604.6758414b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1604.816d8ab5.chunk.js
delete mode 100644 portal-ui/build/static/js/1604.816d8ab5.chunk.js.map
create mode 100644 portal-ui/build/static/js/1705.3ecc6022.chunk.js
create mode 100644 portal-ui/build/static/js/1705.3ecc6022.chunk.js.map
delete mode 100644 portal-ui/build/static/js/1705.88e02e9a.chunk.js
delete mode 100644 portal-ui/build/static/js/1705.88e02e9a.chunk.js.map
rename portal-ui/build/static/js/{1799.d2996f85.chunk.js => 1799.b4e6b095.chunk.js} (96%)
rename portal-ui/build/static/js/{1799.d2996f85.chunk.js.map => 1799.b4e6b095.chunk.js.map} (52%)
delete mode 100644 portal-ui/build/static/js/1829.dddf5fc0.chunk.js
delete mode 100644 portal-ui/build/static/js/1829.dddf5fc0.chunk.js.map
create mode 100644 portal-ui/build/static/js/1829.ebfd458a.chunk.js
create mode 100644 portal-ui/build/static/js/1829.ebfd458a.chunk.js.map
create mode 100644 portal-ui/build/static/js/2032.4598ddc6.chunk.js
create mode 100644 portal-ui/build/static/js/2032.4598ddc6.chunk.js.map
rename portal-ui/build/static/js/{2112.c85537ec.chunk.js => 2112.1820b142.chunk.js} (90%)
create mode 100644 portal-ui/build/static/js/2112.1820b142.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2112.c85537ec.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2180.26a5c38b.chunk.js
delete mode 100644 portal-ui/build/static/js/2180.26a5c38b.chunk.js.map
create mode 100644 portal-ui/build/static/js/2180.dc0f648b.chunk.js
create mode 100644 portal-ui/build/static/js/2180.dc0f648b.chunk.js.map
create mode 100644 portal-ui/build/static/js/2185.9f8ebee0.chunk.js
create mode 100644 portal-ui/build/static/js/2185.9f8ebee0.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2185.b77a9469.chunk.js
delete mode 100644 portal-ui/build/static/js/2185.b77a9469.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2338.0f7ba0f5.chunk.js
create mode 100644 portal-ui/build/static/js/2338.d265a623.chunk.js
rename portal-ui/build/static/js/{2338.0f7ba0f5.chunk.js.map => 2338.d265a623.chunk.js.map} (61%)
delete mode 100644 portal-ui/build/static/js/2408.4f7b17cd.chunk.js.map
rename portal-ui/build/static/js/{2408.4f7b17cd.chunk.js => 2408.b23e320f.chunk.js} (89%)
create mode 100644 portal-ui/build/static/js/2408.b23e320f.chunk.js.map
create mode 100644 portal-ui/build/static/js/247.37adf47a.chunk.js
create mode 100644 portal-ui/build/static/js/247.37adf47a.chunk.js.map
delete mode 100644 portal-ui/build/static/js/247.f860e311.chunk.js
delete mode 100644 portal-ui/build/static/js/247.f860e311.chunk.js.map
create mode 100644 portal-ui/build/static/js/2516.6c64276a.chunk.js
rename portal-ui/build/static/js/{2516.c5c34c4d.chunk.js.map => 2516.6c64276a.chunk.js.map} (50%)
delete mode 100644 portal-ui/build/static/js/2516.c5c34c4d.chunk.js
delete mode 100644 portal-ui/build/static/js/2555.acd8bfbf.chunk.js
delete mode 100644 portal-ui/build/static/js/2555.acd8bfbf.chunk.js.map
create mode 100644 portal-ui/build/static/js/2555.da84d5ce.chunk.js
create mode 100644 portal-ui/build/static/js/2555.da84d5ce.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2637.a78c67b6.chunk.js
delete mode 100644 portal-ui/build/static/js/2637.a78c67b6.chunk.js.map
create mode 100644 portal-ui/build/static/js/2637.a7bb7b5b.chunk.js
create mode 100644 portal-ui/build/static/js/2637.a7bb7b5b.chunk.js.map
create mode 100644 portal-ui/build/static/js/2661.af7d8b4d.chunk.js
create mode 100644 portal-ui/build/static/js/2661.af7d8b4d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2661.ec609143.chunk.js
delete mode 100644 portal-ui/build/static/js/2661.ec609143.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2684.03e0baba.chunk.js
delete mode 100644 portal-ui/build/static/js/2684.03e0baba.chunk.js.map
create mode 100644 portal-ui/build/static/js/2684.73fcefda.chunk.js
create mode 100644 portal-ui/build/static/js/2684.73fcefda.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2763.0e8b50c7.chunk.js
create mode 100644 portal-ui/build/static/js/2763.7c4fb5a0.chunk.js
rename portal-ui/build/static/js/{2763.0e8b50c7.chunk.js.map => 2763.7c4fb5a0.chunk.js.map} (50%)
delete mode 100644 portal-ui/build/static/js/2797.69df7d1d.chunk.js
delete mode 100644 portal-ui/build/static/js/2797.69df7d1d.chunk.js.map
create mode 100644 portal-ui/build/static/js/2797.6dae3357.chunk.js
create mode 100644 portal-ui/build/static/js/2797.6dae3357.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2878.1330cf42.chunk.js
delete mode 100644 portal-ui/build/static/js/2878.1330cf42.chunk.js.map
create mode 100644 portal-ui/build/static/js/2878.6ecef4ed.chunk.js
create mode 100644 portal-ui/build/static/js/2878.6ecef4ed.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2949.2cc2d873.chunk.js
delete mode 100644 portal-ui/build/static/js/2949.2cc2d873.chunk.js.map
create mode 100644 portal-ui/build/static/js/2949.7c1ea98c.chunk.js
create mode 100644 portal-ui/build/static/js/2949.7c1ea98c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/2983.66d9f91c.chunk.js
create mode 100644 portal-ui/build/static/js/2983.ca089e19.chunk.js
rename portal-ui/build/static/js/{2983.66d9f91c.chunk.js.map => 2983.ca089e19.chunk.js.map} (52%)
create mode 100644 portal-ui/build/static/js/3034.eeaa9de7.chunk.js
create mode 100644 portal-ui/build/static/js/3034.eeaa9de7.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3061.12708207.chunk.js
delete mode 100644 portal-ui/build/static/js/3061.12708207.chunk.js.map
create mode 100644 portal-ui/build/static/js/3061.ef8f8361.chunk.js
create mode 100644 portal-ui/build/static/js/3061.ef8f8361.chunk.js.map
create mode 100644 portal-ui/build/static/js/3097.b19643e9.chunk.js
create mode 100644 portal-ui/build/static/js/3097.b19643e9.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3097.c627671b.chunk.js
delete mode 100644 portal-ui/build/static/js/3097.c627671b.chunk.js.map
create mode 100644 portal-ui/build/static/js/3115.da843172.chunk.js
create mode 100644 portal-ui/build/static/js/3115.da843172.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3119.1664ba97.chunk.js
delete mode 100644 portal-ui/build/static/js/3119.1664ba97.chunk.js.map
create mode 100644 portal-ui/build/static/js/3119.e9b6547a.chunk.js
create mode 100644 portal-ui/build/static/js/3119.e9b6547a.chunk.js.map
rename portal-ui/build/static/js/{312.770148c8.chunk.js => 312.1397c0a8.chunk.js} (87%)
create mode 100644 portal-ui/build/static/js/312.1397c0a8.chunk.js.map
delete mode 100644 portal-ui/build/static/js/312.770148c8.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3328.64f37bf8.chunk.js
delete mode 100644 portal-ui/build/static/js/3328.64f37bf8.chunk.js.map
create mode 100644 portal-ui/build/static/js/343.08a3aa1e.chunk.js
create mode 100644 portal-ui/build/static/js/343.08a3aa1e.chunk.js.map
delete mode 100644 portal-ui/build/static/js/343.0d456511.chunk.js
delete mode 100644 portal-ui/build/static/js/343.0d456511.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3543.63b7961a.chunk.js
delete mode 100644 portal-ui/build/static/js/3543.63b7961a.chunk.js.map
create mode 100644 portal-ui/build/static/js/3543.b27540db.chunk.js
create mode 100644 portal-ui/build/static/js/3543.b27540db.chunk.js.map
create mode 100644 portal-ui/build/static/js/3549.4d424641.chunk.js
create mode 100644 portal-ui/build/static/js/3549.4d424641.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3549.dbf06ae0.chunk.js
delete mode 100644 portal-ui/build/static/js/3549.dbf06ae0.chunk.js.map
create mode 100644 portal-ui/build/static/js/3832.064838f9.chunk.js
create mode 100644 portal-ui/build/static/js/3832.064838f9.chunk.js.map
create mode 100644 portal-ui/build/static/js/3839.7de43728.chunk.js
create mode 100644 portal-ui/build/static/js/3839.7de43728.chunk.js.map
create mode 100644 portal-ui/build/static/js/3864.01198cc4.chunk.js
create mode 100644 portal-ui/build/static/js/3864.01198cc4.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3875.68ff4b06.chunk.js
delete mode 100644 portal-ui/build/static/js/3875.68ff4b06.chunk.js.map
create mode 100644 portal-ui/build/static/js/3875.e4e37704.chunk.js
create mode 100644 portal-ui/build/static/js/3875.e4e37704.chunk.js.map
create mode 100644 portal-ui/build/static/js/3905.640266d7.chunk.js
create mode 100644 portal-ui/build/static/js/3905.640266d7.chunk.js.map
rename portal-ui/build/static/js/{3956.81b98a64.chunk.js => 3956.802d6679.chunk.js} (89%)
create mode 100644 portal-ui/build/static/js/3956.802d6679.chunk.js.map
delete mode 100644 portal-ui/build/static/js/3956.81b98a64.chunk.js.map
rename portal-ui/build/static/js/{402.46c69861.chunk.js => 402.2318f11d.chunk.js} (90%)
create mode 100644 portal-ui/build/static/js/402.2318f11d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/402.46c69861.chunk.js.map
rename portal-ui/build/static/js/{8896.57d6fdd4.chunk.js => 4021.b25d428e.chunk.js} (52%)
rename portal-ui/build/static/js/{8896.57d6fdd4.chunk.js.LICENSE.txt => 4021.b25d428e.chunk.js.LICENSE.txt} (100%)
rename portal-ui/build/static/js/{8896.57d6fdd4.chunk.js.map => 4021.b25d428e.chunk.js.map} (50%)
create mode 100644 portal-ui/build/static/js/4061.21163e18.chunk.js
create mode 100644 portal-ui/build/static/js/4061.21163e18.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4061.bc2708cb.chunk.js
delete mode 100644 portal-ui/build/static/js/4061.bc2708cb.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4131.498b212f.chunk.js
delete mode 100644 portal-ui/build/static/js/4131.498b212f.chunk.js.map
create mode 100644 portal-ui/build/static/js/4131.fb6eaf02.chunk.js
create mode 100644 portal-ui/build/static/js/4131.fb6eaf02.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4133.4da17d39.chunk.js
delete mode 100644 portal-ui/build/static/js/4133.4da17d39.chunk.js.map
create mode 100644 portal-ui/build/static/js/4133.fff44ab1.chunk.js
create mode 100644 portal-ui/build/static/js/4133.fff44ab1.chunk.js.map
create mode 100644 portal-ui/build/static/js/4209.06b0245b.chunk.js
create mode 100644 portal-ui/build/static/js/4209.06b0245b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4209.d713bd2e.chunk.js
delete mode 100644 portal-ui/build/static/js/4209.d713bd2e.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4335.e38511e4.chunk.js
delete mode 100644 portal-ui/build/static/js/4335.e38511e4.chunk.js.map
create mode 100644 portal-ui/build/static/js/4335.fe71a24c.chunk.js
create mode 100644 portal-ui/build/static/js/4335.fe71a24c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4414.8d9d85ec.chunk.js
delete mode 100644 portal-ui/build/static/js/4414.8d9d85ec.chunk.js.map
create mode 100644 portal-ui/build/static/js/4414.ff3ede37.chunk.js
create mode 100644 portal-ui/build/static/js/4414.ff3ede37.chunk.js.map
create mode 100644 portal-ui/build/static/js/4455.93668d49.chunk.js
rename portal-ui/build/static/js/{4455.aceaa0c6.chunk.js.map => 4455.93668d49.chunk.js.map} (99%)
delete mode 100644 portal-ui/build/static/js/4455.aceaa0c6.chunk.js
rename portal-ui/build/static/js/{455.4b142906.chunk.js => 455.1ab65317.chunk.js} (88%)
create mode 100644 portal-ui/build/static/js/455.1ab65317.chunk.js.map
delete mode 100644 portal-ui/build/static/js/455.4b142906.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4619.1abcedba.chunk.js
delete mode 100644 portal-ui/build/static/js/4619.1abcedba.chunk.js.map
create mode 100644 portal-ui/build/static/js/4619.beba8be5.chunk.js
create mode 100644 portal-ui/build/static/js/4619.beba8be5.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4672.a4d46683.chunk.js
delete mode 100644 portal-ui/build/static/js/4672.a4d46683.chunk.js.map
create mode 100644 portal-ui/build/static/js/4672.df68fa8d.chunk.js
create mode 100644 portal-ui/build/static/js/4672.df68fa8d.chunk.js.map
create mode 100644 portal-ui/build/static/js/4781.27325faf.chunk.js
create mode 100644 portal-ui/build/static/js/4781.27325faf.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4781.f4794912.chunk.js
delete mode 100644 portal-ui/build/static/js/4781.f4794912.chunk.js.map
create mode 100644 portal-ui/build/static/js/483.6f698412.chunk.js
create mode 100644 portal-ui/build/static/js/483.6f698412.chunk.js.map
delete mode 100644 portal-ui/build/static/js/483.f2287673.chunk.js
delete mode 100644 portal-ui/build/static/js/483.f2287673.chunk.js.map
create mode 100644 portal-ui/build/static/js/4873.1840dbc4.chunk.js
create mode 100644 portal-ui/build/static/js/4873.1840dbc4.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4873.5bde9bed.chunk.js
delete mode 100644 portal-ui/build/static/js/4873.5bde9bed.chunk.js.map
create mode 100644 portal-ui/build/static/js/4902.04f664fa.chunk.js
create mode 100644 portal-ui/build/static/js/4902.04f664fa.chunk.js.map
delete mode 100644 portal-ui/build/static/js/4902.0ede76f0.chunk.js
delete mode 100644 portal-ui/build/static/js/4902.0ede76f0.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5088.2a540e0f.chunk.js
delete mode 100644 portal-ui/build/static/js/5088.2a540e0f.chunk.js.map
create mode 100644 portal-ui/build/static/js/5088.e2dea68b.chunk.js
create mode 100644 portal-ui/build/static/js/5088.e2dea68b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/51.19251cf7.chunk.js
delete mode 100644 portal-ui/build/static/js/51.19251cf7.chunk.js.map
create mode 100644 portal-ui/build/static/js/51.ab1fa6c3.chunk.js
create mode 100644 portal-ui/build/static/js/51.ab1fa6c3.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5112.145171e2.chunk.js
delete mode 100644 portal-ui/build/static/js/5112.145171e2.chunk.js.map
create mode 100644 portal-ui/build/static/js/5112.1e71afd4.chunk.js
create mode 100644 portal-ui/build/static/js/5112.1e71afd4.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5140.c3d0a706.chunk.js
delete mode 100644 portal-ui/build/static/js/5140.c3d0a706.chunk.js.map
create mode 100644 portal-ui/build/static/js/5140.d55a77e3.chunk.js
create mode 100644 portal-ui/build/static/js/5140.d55a77e3.chunk.js.map
rename portal-ui/build/static/js/{5223.218fce49.chunk.js => 5223.d3ef0b66.chunk.js} (54%)
rename portal-ui/build/static/js/{5223.218fce49.chunk.js.map => 5223.d3ef0b66.chunk.js.map} (68%)
rename portal-ui/build/static/js/{5367.a0c076fc.chunk.js => 5367.12b9d328.chunk.js} (60%)
rename portal-ui/build/static/js/{5367.a0c076fc.chunk.js.map => 5367.12b9d328.chunk.js.map} (99%)
create mode 100644 portal-ui/build/static/js/537.561ba81d.chunk.js
create mode 100644 portal-ui/build/static/js/537.561ba81d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/537.ac3e6c1f.chunk.js
delete mode 100644 portal-ui/build/static/js/537.ac3e6c1f.chunk.js.map
create mode 100644 portal-ui/build/static/js/5503.99647175.chunk.js
create mode 100644 portal-ui/build/static/js/5503.99647175.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5503.ede909ff.chunk.js
delete mode 100644 portal-ui/build/static/js/5503.ede909ff.chunk.js.map
create mode 100644 portal-ui/build/static/js/5517.c01a8b7c.chunk.js
create mode 100644 portal-ui/build/static/js/5517.c01a8b7c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5517.c2167d52.chunk.js
delete mode 100644 portal-ui/build/static/js/5517.c2167d52.chunk.js.map
create mode 100644 portal-ui/build/static/js/5643.58815d0f.chunk.js
create mode 100644 portal-ui/build/static/js/5643.58815d0f.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5643.d7b117e6.chunk.js
delete mode 100644 portal-ui/build/static/js/5643.d7b117e6.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5690.770e1ac1.chunk.js
delete mode 100644 portal-ui/build/static/js/5690.770e1ac1.chunk.js.map
create mode 100644 portal-ui/build/static/js/583.7e06d8f7.chunk.js
create mode 100644 portal-ui/build/static/js/583.7e06d8f7.chunk.js.map
create mode 100644 portal-ui/build/static/js/5861.37a1f0f2.chunk.js
create mode 100644 portal-ui/build/static/js/5861.37a1f0f2.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5861.9b443eee.chunk.js
delete mode 100644 portal-ui/build/static/js/5861.9b443eee.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5882.6b35beab.chunk.js
delete mode 100644 portal-ui/build/static/js/5882.6b35beab.chunk.js.map
create mode 100644 portal-ui/build/static/js/5882.ad761d2c.chunk.js
create mode 100644 portal-ui/build/static/js/5882.ad761d2c.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5926.916c8233.chunk.js.map
rename portal-ui/build/static/js/{5926.916c8233.chunk.js => 5926.b3d18dd7.chunk.js} (98%)
create mode 100644 portal-ui/build/static/js/5926.b3d18dd7.chunk.js.map
rename portal-ui/build/static/js/{5995.aee721bd.chunk.js => 5995.686a9a3d.chunk.js} (99%)
create mode 100644 portal-ui/build/static/js/5995.686a9a3d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/5995.aee721bd.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6040.c297c8b1.chunk.js
delete mode 100644 portal-ui/build/static/js/6040.c297c8b1.chunk.js.map
create mode 100644 portal-ui/build/static/js/6040.e12da05d.chunk.js
create mode 100644 portal-ui/build/static/js/6040.e12da05d.chunk.js.map
create mode 100644 portal-ui/build/static/js/6137.7535bbb1.chunk.js
rename portal-ui/build/static/js/{6137.90580e27.chunk.js.map => 6137.7535bbb1.chunk.js.map} (99%)
delete mode 100644 portal-ui/build/static/js/6137.90580e27.chunk.js
delete mode 100644 portal-ui/build/static/js/6401.2d1d41e3.chunk.js
delete mode 100644 portal-ui/build/static/js/6401.2d1d41e3.chunk.js.map
create mode 100644 portal-ui/build/static/js/6401.f5081a76.chunk.js
create mode 100644 portal-ui/build/static/js/6401.f5081a76.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6405.0e2d66a4.chunk.js
delete mode 100644 portal-ui/build/static/js/6405.0e2d66a4.chunk.js.map
create mode 100644 portal-ui/build/static/js/6405.a17792e5.chunk.js
create mode 100644 portal-ui/build/static/js/6405.a17792e5.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6510.29948999.chunk.js
delete mode 100644 portal-ui/build/static/js/6510.29948999.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6526.a725f558.chunk.js
delete mode 100644 portal-ui/build/static/js/6526.a725f558.chunk.js.map
create mode 100644 portal-ui/build/static/js/6526.fb2e4acc.chunk.js
create mode 100644 portal-ui/build/static/js/6526.fb2e4acc.chunk.js.map
create mode 100644 portal-ui/build/static/js/6577.8452e067.chunk.js
create mode 100644 portal-ui/build/static/js/6577.8452e067.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6577.caaa5471.chunk.js
delete mode 100644 portal-ui/build/static/js/6577.caaa5471.chunk.js.map
create mode 100644 portal-ui/build/static/js/6621.4eb56e28.chunk.js
create mode 100644 portal-ui/build/static/js/6621.4eb56e28.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6763.d2f4f7b7.chunk.js
delete mode 100644 portal-ui/build/static/js/6763.d2f4f7b7.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6895.8d73d55a.chunk.js
delete mode 100644 portal-ui/build/static/js/6895.8d73d55a.chunk.js.map
create mode 100644 portal-ui/build/static/js/6895.d8bf854d.chunk.js
create mode 100644 portal-ui/build/static/js/6895.d8bf854d.chunk.js.map
create mode 100644 portal-ui/build/static/js/6901.9c779e6d.chunk.js
create mode 100644 portal-ui/build/static/js/6901.9c779e6d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6901.d43d56e6.chunk.js
delete mode 100644 portal-ui/build/static/js/6901.d43d56e6.chunk.js.map
rename portal-ui/build/static/js/{6914.98367537.chunk.js => 6914.9cc3ab4e.chunk.js} (84%)
rename portal-ui/build/static/js/{6914.98367537.chunk.js.map => 6914.9cc3ab4e.chunk.js.map} (98%)
delete mode 100644 portal-ui/build/static/js/692.6c4b6abb.chunk.js
delete mode 100644 portal-ui/build/static/js/692.6c4b6abb.chunk.js.map
create mode 100644 portal-ui/build/static/js/692.aa4b543f.chunk.js
create mode 100644 portal-ui/build/static/js/692.aa4b543f.chunk.js.map
create mode 100644 portal-ui/build/static/js/6995.5b180444.chunk.js
create mode 100644 portal-ui/build/static/js/6995.5b180444.chunk.js.map
delete mode 100644 portal-ui/build/static/js/6995.b765bc2f.chunk.js
delete mode 100644 portal-ui/build/static/js/6995.b765bc2f.chunk.js.map
delete mode 100644 portal-ui/build/static/js/701.c1e0e69c.chunk.js
create mode 100644 portal-ui/build/static/js/701.c438988e.chunk.js
rename portal-ui/build/static/js/{701.c1e0e69c.chunk.js.map => 701.c438988e.chunk.js.map} (99%)
create mode 100644 portal-ui/build/static/js/7021.35a1212b.chunk.js
create mode 100644 portal-ui/build/static/js/7021.35a1212b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7021.cbf7f23a.chunk.js
delete mode 100644 portal-ui/build/static/js/7021.cbf7f23a.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7092.98cb7d30.chunk.js
delete mode 100644 portal-ui/build/static/js/7092.98cb7d30.chunk.js.map
delete mode 100644 portal-ui/build/static/js/711.c9f818ab.chunk.js.map
rename portal-ui/build/static/js/{711.c9f818ab.chunk.js => 711.fbbd2d52.chunk.js} (95%)
create mode 100644 portal-ui/build/static/js/711.fbbd2d52.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7164.3762a0c0.chunk.js
delete mode 100644 portal-ui/build/static/js/7164.3762a0c0.chunk.js.map
create mode 100644 portal-ui/build/static/js/7164.ca69b510.chunk.js
create mode 100644 portal-ui/build/static/js/7164.ca69b510.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7295.acbcda52.chunk.js.map
rename portal-ui/build/static/js/{7295.acbcda52.chunk.js => 7295.cfd1690b.chunk.js} (86%)
create mode 100644 portal-ui/build/static/js/7295.cfd1690b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7585.22a36735.chunk.js
delete mode 100644 portal-ui/build/static/js/7585.22a36735.chunk.js.map
create mode 100644 portal-ui/build/static/js/7585.ab5a26e5.chunk.js
create mode 100644 portal-ui/build/static/js/7585.ab5a26e5.chunk.js.map
create mode 100644 portal-ui/build/static/js/7770.611c18cd.chunk.js
create mode 100644 portal-ui/build/static/js/7770.611c18cd.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7770.a8aef98b.chunk.js
delete mode 100644 portal-ui/build/static/js/7770.a8aef98b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7798.88e1551b.chunk.js
delete mode 100644 portal-ui/build/static/js/7798.88e1551b.chunk.js.map
create mode 100644 portal-ui/build/static/js/7798.d6a28f0f.chunk.js
create mode 100644 portal-ui/build/static/js/7798.d6a28f0f.chunk.js.map
rename portal-ui/build/static/js/{7847.e49a6564.chunk.js => 7847.7319336d.chunk.js} (97%)
create mode 100644 portal-ui/build/static/js/7847.7319336d.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7847.e49a6564.chunk.js.map
delete mode 100644 portal-ui/build/static/js/7873.0f0682a9.chunk.js
delete mode 100644 portal-ui/build/static/js/7873.0f0682a9.chunk.js.map
create mode 100644 portal-ui/build/static/js/7873.7374a5f3.chunk.js
create mode 100644 portal-ui/build/static/js/7873.7374a5f3.chunk.js.map
create mode 100644 portal-ui/build/static/js/7893.f547add4.chunk.js
create mode 100644 portal-ui/build/static/js/7893.f547add4.chunk.js.map
delete mode 100644 portal-ui/build/static/js/8277.78032a3f.chunk.js
delete mode 100644 portal-ui/build/static/js/8277.78032a3f.chunk.js.map
rename portal-ui/build/static/js/{8350.ff17d087.chunk.js => 8350.70bb0791.chunk.js} (91%)
rename portal-ui/build/static/js/{8350.ff17d087.chunk.js.map => 8350.70bb0791.chunk.js.map} (54%)
delete mode 100644 portal-ui/build/static/js/8360.19c25a88.chunk.js
delete mode 100644 portal-ui/build/static/js/8360.19c25a88.chunk.js.map
create mode 100644 portal-ui/build/static/js/8360.c87a8251.chunk.js
create mode 100644 portal-ui/build/static/js/8360.c87a8251.chunk.js.map
delete mode 100644 portal-ui/build/static/js/8391.875d2320.chunk.js
delete mode 100644 portal-ui/build/static/js/8391.875d2320.chunk.js.map
create mode 100644 portal-ui/build/static/js/8455.416190cd.chunk.js
create mode 100644 portal-ui/build/static/js/8455.416190cd.chunk.js.map
delete mode 100644 portal-ui/build/static/js/8455.5db6563b.chunk.js
delete mode 100644 portal-ui/build/static/js/8455.5db6563b.chunk.js.map
delete mode 100644 portal-ui/build/static/js/8626.198c0509.chunk.js
delete mode 100644 portal-ui/build/static/js/8626.198c0509.chunk.js.map
create mode 100644 portal-ui/build/static/js/8626.d4b77c9f.chunk.js
create mode 100644 portal-ui/build/static/js/8626.d4b77c9f.chunk.js.map
create mode 100644 portal-ui/build/static/js/8725.7ed02e0c.chunk.js
create mode 100644 portal-ui/build/static/js/8725.7ed02e0c.chunk.js.map
create mode 100644 portal-ui/build/static/js/8833.6d5381bf.chunk.js
create mode 100644 portal-ui/build/static/js/8833.6d5381bf.chunk.js.map
delete mode 100644 portal-ui/build/static/js/8833.cc57fe33.chunk.js
delete mode 100644 portal-ui/build/static/js/8833.cc57fe33.chunk.js.map
delete mode 100644 portal-ui/build/static/js/889.bba47c51.chunk.js
delete mode 100644 portal-ui/build/static/js/889.bba47c51.chunk.js.map
create mode 100644 portal-ui/build/static/js/889.bc3ac140.chunk.js
create mode 100644 portal-ui/build/static/js/889.bc3ac140.chunk.js.map
rename portal-ui/build/static/js/{9031.d8ddf273.chunk.js => 8896.aa552ac4.chunk.js} (78%)
create mode 100644 portal-ui/build/static/js/8896.aa552ac4.chunk.js.map
rename portal-ui/build/static/js/{8990.4f806e82.chunk.js => 8990.9cbc5e71.chunk.js} (87%)
rename portal-ui/build/static/js/{8990.4f806e82.chunk.js.map => 8990.9cbc5e71.chunk.js.map} (51%)
delete mode 100644 portal-ui/build/static/js/8998.6d51ddf2.chunk.js
delete mode 100644 portal-ui/build/static/js/8998.6d51ddf2.chunk.js.map
create mode 100644 portal-ui/build/static/js/8998.a5f0b2dc.chunk.js
create mode 100644 portal-ui/build/static/js/8998.a5f0b2dc.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9031.d8ddf273.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9088.17f4cb12.chunk.js.map
rename portal-ui/build/static/js/{9088.17f4cb12.chunk.js => 9088.89fcd230.chunk.js} (95%)
create mode 100644 portal-ui/build/static/js/9088.89fcd230.chunk.js.map
rename portal-ui/build/static/js/{9134.a172a7f7.chunk.js => 9134.764884d7.chunk.js} (70%)
rename portal-ui/build/static/js/{9134.a172a7f7.chunk.js.map => 9134.764884d7.chunk.js.map} (99%)
delete mode 100644 portal-ui/build/static/js/9145.77b06f48.chunk.js.map
rename portal-ui/build/static/js/{9145.77b06f48.chunk.js => 9145.b61c5e46.chunk.js} (66%)
create mode 100644 portal-ui/build/static/js/9145.b61c5e46.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9179.26f8387f.chunk.js
delete mode 100644 portal-ui/build/static/js/9179.26f8387f.chunk.js.map
create mode 100644 portal-ui/build/static/js/9179.962d592f.chunk.js
create mode 100644 portal-ui/build/static/js/9179.962d592f.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9221.38a31de2.chunk.js
create mode 100644 portal-ui/build/static/js/9221.b78f1e48.chunk.js
rename portal-ui/build/static/js/{9221.38a31de2.chunk.js.map => 9221.b78f1e48.chunk.js.map} (51%)
create mode 100644 portal-ui/build/static/js/9251.a9e6e404.chunk.js
create mode 100644 portal-ui/build/static/js/9251.a9e6e404.chunk.js.map
rename portal-ui/build/static/js/{9297.0fa667e5.chunk.js => 9297.ab07c841.chunk.js} (57%)
rename portal-ui/build/static/js/{9297.0fa667e5.chunk.js.map => 9297.ab07c841.chunk.js.map} (68%)
delete mode 100644 portal-ui/build/static/js/9467.0ba82b58.chunk.js
delete mode 100644 portal-ui/build/static/js/9467.0ba82b58.chunk.js.map
create mode 100644 portal-ui/build/static/js/9467.5eac6111.chunk.js
create mode 100644 portal-ui/build/static/js/9467.5eac6111.chunk.js.map
create mode 100644 portal-ui/build/static/js/9478.6a568948.chunk.js
create mode 100644 portal-ui/build/static/js/9478.6a568948.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9478.b1688b00.chunk.js
delete mode 100644 portal-ui/build/static/js/9478.b1688b00.chunk.js.map
rename portal-ui/build/static/js/{9611.dc6938ca.chunk.js => 9611.7f153cb9.chunk.js} (85%)
rename portal-ui/build/static/js/{9611.dc6938ca.chunk.js.map => 9611.7f153cb9.chunk.js.map} (85%)
delete mode 100644 portal-ui/build/static/js/9682.5c31e74c.chunk.js
delete mode 100644 portal-ui/build/static/js/9682.5c31e74c.chunk.js.map
create mode 100644 portal-ui/build/static/js/9682.bf1d4c51.chunk.js
create mode 100644 portal-ui/build/static/js/9682.bf1d4c51.chunk.js.map
create mode 100644 portal-ui/build/static/js/977.1d5d246f.chunk.js
create mode 100644 portal-ui/build/static/js/977.1d5d246f.chunk.js.map
create mode 100644 portal-ui/build/static/js/9779.4f8ac570.chunk.js
create mode 100644 portal-ui/build/static/js/9779.4f8ac570.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9779.6d822fe6.chunk.js
delete mode 100644 portal-ui/build/static/js/9779.6d822fe6.chunk.js.map
create mode 100644 portal-ui/build/static/js/9918.80f0bfbe.chunk.js
create mode 100644 portal-ui/build/static/js/9918.80f0bfbe.chunk.js.map
create mode 100644 portal-ui/build/static/js/9952.5ed9b96a.chunk.js
create mode 100644 portal-ui/build/static/js/9952.5ed9b96a.chunk.js.map
rename portal-ui/build/static/js/{9968.8cde9579.chunk.js => 9968.6da000eb.chunk.js} (87%)
create mode 100644 portal-ui/build/static/js/9968.6da000eb.chunk.js.map
delete mode 100644 portal-ui/build/static/js/9968.8cde9579.chunk.js.map
create mode 100644 portal-ui/build/static/js/main.c7a9c285.js
rename portal-ui/build/static/js/{main.e02e3a76.js.LICENSE.txt => main.c7a9c285.js.LICENSE.txt} (100%)
create mode 100644 portal-ui/build/static/js/main.c7a9c285.js.map
delete mode 100644 portal-ui/build/static/js/main.e02e3a76.js
delete mode 100644 portal-ui/build/static/js/main.e02e3a76.js.map
diff --git a/k8s/operator-console/base/console-deployment.yaml b/k8s/operator-console/base/console-deployment.yaml
index dc2814b72..1e44e5ea5 100644
--- a/k8s/operator-console/base/console-deployment.yaml
+++ b/k8s/operator-console/base/console-deployment.yaml
@@ -15,7 +15,7 @@ spec:
serviceAccountName: console-sa
containers:
- name: console
- image: 'minio/console:v0.22.4'
+ image: 'minio/console:v0.22.5'
imagePullPolicy: "IfNotPresent"
env:
- name: CONSOLE_OPERATOR_MODE
diff --git a/k8s/operator-console/standalone/console-deployment.yaml b/k8s/operator-console/standalone/console-deployment.yaml
index 829d2dc87..b094a4b44 100644
--- a/k8s/operator-console/standalone/console-deployment.yaml
+++ b/k8s/operator-console/standalone/console-deployment.yaml
@@ -32,7 +32,7 @@ spec:
spec:
containers:
- name: console
- image: 'minio/console:v0.22.4'
+ image: 'minio/console:v0.22.5'
imagePullPolicy: "IfNotPresent"
env:
- name: CONSOLE_MINIO_SERVER
diff --git a/portal-ui/build/asset-manifest.json b/portal-ui/build/asset-manifest.json
index 01bea6ecb..cf9df5081 100644
--- a/portal-ui/build/asset-manifest.json
+++ b/portal-ui/build/asset-manifest.json
@@ -1,166 +1,175 @@
{
"files": {
- "main.css": "./static/css/main.b20a708b.css",
- "main.js": "./static/js/main.e02e3a76.js",
+ "main.css": "./static/css/main.7c092a9d.css",
+ "main.js": "./static/js/main.c7a9c285.js",
"static/js/1260.4885d31b.chunk.js": "./static/js/1260.4885d31b.chunk.js",
- "static/js/6914.98367537.chunk.js": "./static/js/6914.98367537.chunk.js",
- "static/js/4209.d713bd2e.chunk.js": "./static/js/4209.d713bd2e.chunk.js",
- "static/js/1829.dddf5fc0.chunk.js": "./static/js/1829.dddf5fc0.chunk.js",
- "static/js/4455.aceaa0c6.chunk.js": "./static/js/4455.aceaa0c6.chunk.js",
- "static/js/5088.2a540e0f.chunk.js": "./static/js/5088.2a540e0f.chunk.js",
- "static/js/5140.c3d0a706.chunk.js": "./static/js/5140.c3d0a706.chunk.js",
+ "static/js/6914.9cc3ab4e.chunk.js": "./static/js/6914.9cc3ab4e.chunk.js",
+ "static/js/4209.06b0245b.chunk.js": "./static/js/4209.06b0245b.chunk.js",
+ "static/js/1829.ebfd458a.chunk.js": "./static/js/1829.ebfd458a.chunk.js",
+ "static/js/4455.93668d49.chunk.js": "./static/js/4455.93668d49.chunk.js",
+ "static/js/5088.e2dea68b.chunk.js": "./static/js/5088.e2dea68b.chunk.js",
+ "static/js/5140.d55a77e3.chunk.js": "./static/js/5140.d55a77e3.chunk.js",
"static/js/852.952af138.chunk.js": "./static/js/852.952af138.chunk.js",
- "static/css/1275.e99c33cf.chunk.css": "./static/css/1275.e99c33cf.chunk.css",
- "static/js/1275.3857a963.chunk.js": "./static/js/1275.3857a963.chunk.js",
+ "static/css/1275.8bbdd881.chunk.css": "./static/css/1275.8bbdd881.chunk.css",
+ "static/js/1275.1d84ee6a.chunk.js": "./static/js/1275.1d84ee6a.chunk.js",
"static/js/3176.59846ccd.chunk.js": "./static/js/3176.59846ccd.chunk.js",
- "static/js/6137.90580e27.chunk.js": "./static/js/6137.90580e27.chunk.js",
- "static/js/5995.aee721bd.chunk.js": "./static/js/5995.aee721bd.chunk.js",
- "static/js/7092.98cb7d30.chunk.js": "./static/js/7092.98cb7d30.chunk.js",
- "static/js/2338.0f7ba0f5.chunk.js": "./static/js/2338.0f7ba0f5.chunk.js",
- "static/js/4335.e38511e4.chunk.js": "./static/js/4335.e38511e4.chunk.js",
- "static/js/3061.12708207.chunk.js": "./static/js/3061.12708207.chunk.js",
- "static/js/6763.d2f4f7b7.chunk.js": "./static/js/6763.d2f4f7b7.chunk.js",
- "static/js/3543.63b7961a.chunk.js": "./static/js/3543.63b7961a.chunk.js",
- "static/js/4061.bc2708cb.chunk.js": "./static/js/4061.bc2708cb.chunk.js",
- "static/js/5112.145171e2.chunk.js": "./static/js/5112.145171e2.chunk.js",
- "static/js/9611.dc6938ca.chunk.js": "./static/js/9611.dc6938ca.chunk.js",
- "static/js/2637.a78c67b6.chunk.js": "./static/js/2637.a78c67b6.chunk.js",
- "static/css/5503.e99c33cf.chunk.css": "./static/css/5503.e99c33cf.chunk.css",
- "static/js/5503.ede909ff.chunk.js": "./static/js/5503.ede909ff.chunk.js",
- "static/js/5926.916c8233.chunk.js": "./static/js/5926.916c8233.chunk.js",
- "static/js/6040.c297c8b1.chunk.js": "./static/js/6040.c297c8b1.chunk.js",
- "static/js/701.c1e0e69c.chunk.js": "./static/js/701.c1e0e69c.chunk.js",
+ "static/js/6137.7535bbb1.chunk.js": "./static/js/6137.7535bbb1.chunk.js",
+ "static/js/5995.686a9a3d.chunk.js": "./static/js/5995.686a9a3d.chunk.js",
+ "static/js/9251.a9e6e404.chunk.js": "./static/js/9251.a9e6e404.chunk.js",
+ "static/js/2338.d265a623.chunk.js": "./static/js/2338.d265a623.chunk.js",
+ "static/js/4335.fe71a24c.chunk.js": "./static/js/4335.fe71a24c.chunk.js",
+ "static/js/3061.ef8f8361.chunk.js": "./static/js/3061.ef8f8361.chunk.js",
+ "static/js/3832.064838f9.chunk.js": "./static/js/3832.064838f9.chunk.js",
+ "static/js/3543.b27540db.chunk.js": "./static/js/3543.b27540db.chunk.js",
+ "static/js/4061.21163e18.chunk.js": "./static/js/4061.21163e18.chunk.js",
+ "static/js/5112.1e71afd4.chunk.js": "./static/js/5112.1e71afd4.chunk.js",
+ "static/js/9611.7f153cb9.chunk.js": "./static/js/9611.7f153cb9.chunk.js",
+ "static/js/2637.a7bb7b5b.chunk.js": "./static/js/2637.a7bb7b5b.chunk.js",
+ "static/css/5503.8bbdd881.chunk.css": "./static/css/5503.8bbdd881.chunk.css",
+ "static/js/5503.99647175.chunk.js": "./static/js/5503.99647175.chunk.js",
+ "static/js/5926.b3d18dd7.chunk.js": "./static/js/5926.b3d18dd7.chunk.js",
+ "static/js/6040.e12da05d.chunk.js": "./static/js/6040.e12da05d.chunk.js",
+ "static/js/701.c438988e.chunk.js": "./static/js/701.c438988e.chunk.js",
"static/js/7821.150c08fd.chunk.js": "./static/js/7821.150c08fd.chunk.js",
- "static/css/6995.e99c33cf.chunk.css": "./static/css/6995.e99c33cf.chunk.css",
- "static/js/6995.b765bc2f.chunk.js": "./static/js/6995.b765bc2f.chunk.js",
- "static/js/4131.498b212f.chunk.js": "./static/js/4131.498b212f.chunk.js",
- "static/css/343.e99c33cf.chunk.css": "./static/css/343.e99c33cf.chunk.css",
- "static/js/343.0d456511.chunk.js": "./static/js/343.0d456511.chunk.js",
- "static/css/3549.e99c33cf.chunk.css": "./static/css/3549.e99c33cf.chunk.css",
- "static/js/3549.dbf06ae0.chunk.js": "./static/js/3549.dbf06ae0.chunk.js",
- "static/css/5517.e99c33cf.chunk.css": "./static/css/5517.e99c33cf.chunk.css",
- "static/js/5517.c2167d52.chunk.js": "./static/js/5517.c2167d52.chunk.js",
- "static/js/2555.acd8bfbf.chunk.js": "./static/js/2555.acd8bfbf.chunk.js",
+ "static/css/6995.8bbdd881.chunk.css": "./static/css/6995.8bbdd881.chunk.css",
+ "static/js/6995.5b180444.chunk.js": "./static/js/6995.5b180444.chunk.js",
+ "static/js/4131.fb6eaf02.chunk.js": "./static/js/4131.fb6eaf02.chunk.js",
+ "static/css/343.8bbdd881.chunk.css": "./static/css/343.8bbdd881.chunk.css",
+ "static/js/343.08a3aa1e.chunk.js": "./static/js/343.08a3aa1e.chunk.js",
+ "static/css/3549.8bbdd881.chunk.css": "./static/css/3549.8bbdd881.chunk.css",
+ "static/js/3549.4d424641.chunk.js": "./static/js/3549.4d424641.chunk.js",
+ "static/css/5517.8bbdd881.chunk.css": "./static/css/5517.8bbdd881.chunk.css",
+ "static/js/5517.c01a8b7c.chunk.js": "./static/js/5517.c01a8b7c.chunk.js",
+ "static/js/2555.da84d5ce.chunk.js": "./static/js/2555.da84d5ce.chunk.js",
"static/js/7486.83e0d248.chunk.js": "./static/js/7486.83e0d248.chunk.js",
"static/js/1377.6fbc40f3.chunk.js": "./static/js/1377.6fbc40f3.chunk.js",
- "static/js/4672.a4d46683.chunk.js": "./static/js/4672.a4d46683.chunk.js",
- "static/js/2516.c5c34c4d.chunk.js": "./static/js/2516.c5c34c4d.chunk.js",
+ "static/js/4672.df68fa8d.chunk.js": "./static/js/4672.df68fa8d.chunk.js",
+ "static/js/2516.6c64276a.chunk.js": "./static/js/2516.6c64276a.chunk.js",
"static/js/2759.e83946f0.chunk.js": "./static/js/2759.e83946f0.chunk.js",
- "static/js/7295.acbcda52.chunk.js": "./static/js/7295.acbcda52.chunk.js",
- "static/js/7585.22a36735.chunk.js": "./static/js/7585.22a36735.chunk.js",
- "static/js/4902.0ede76f0.chunk.js": "./static/js/4902.0ede76f0.chunk.js",
- "static/js/7847.e49a6564.chunk.js": "./static/js/7847.e49a6564.chunk.js",
- "static/js/3097.c627671b.chunk.js": "./static/js/3097.c627671b.chunk.js",
- "static/js/692.6c4b6abb.chunk.js": "./static/js/692.6c4b6abb.chunk.js",
- "static/js/8626.198c0509.chunk.js": "./static/js/8626.198c0509.chunk.js",
- "static/js/8360.19c25a88.chunk.js": "./static/js/8360.19c25a88.chunk.js",
- "static/js/6577.caaa5471.chunk.js": "./static/js/6577.caaa5471.chunk.js",
- "static/js/3875.68ff4b06.chunk.js": "./static/js/3875.68ff4b06.chunk.js",
- "static/js/6401.2d1d41e3.chunk.js": "./static/js/6401.2d1d41e3.chunk.js",
- "static/js/2949.2cc2d873.chunk.js": "./static/js/2949.2cc2d873.chunk.js",
- "static/js/3119.1664ba97.chunk.js": "./static/js/3119.1664ba97.chunk.js",
- "static/js/5643.d7b117e6.chunk.js": "./static/js/5643.d7b117e6.chunk.js",
- "static/js/4781.f4794912.chunk.js": "./static/js/4781.f4794912.chunk.js",
- "static/js/9478.b1688b00.chunk.js": "./static/js/9478.b1688b00.chunk.js",
- "static/js/7164.3762a0c0.chunk.js": "./static/js/7164.3762a0c0.chunk.js",
- "static/js/4414.8d9d85ec.chunk.js": "./static/js/4414.8d9d85ec.chunk.js",
- "static/js/7798.88e1551b.chunk.js": "./static/js/7798.88e1551b.chunk.js",
- "static/js/8833.cc57fe33.chunk.js": "./static/js/8833.cc57fe33.chunk.js",
- "static/js/6526.a725f558.chunk.js": "./static/js/6526.a725f558.chunk.js",
- "static/js/483.f2287673.chunk.js": "./static/js/483.f2287673.chunk.js",
- "static/js/5882.6b35beab.chunk.js": "./static/js/5882.6b35beab.chunk.js",
- "static/js/5690.770e1ac1.chunk.js": "./static/js/5690.770e1ac1.chunk.js",
- "static/js/9467.0ba82b58.chunk.js": "./static/js/9467.0ba82b58.chunk.js",
- "static/js/6895.8d73d55a.chunk.js": "./static/js/6895.8d73d55a.chunk.js",
- "static/js/8277.78032a3f.chunk.js": "./static/js/8277.78032a3f.chunk.js",
- "static/js/4133.4da17d39.chunk.js": "./static/js/4133.4da17d39.chunk.js",
- "static/css/1367.e99c33cf.chunk.css": "./static/css/1367.e99c33cf.chunk.css",
- "static/js/1367.e7a5805d.chunk.js": "./static/js/1367.e7a5805d.chunk.js",
- "static/js/3956.81b98a64.chunk.js": "./static/js/3956.81b98a64.chunk.js",
- "static/js/9221.38a31de2.chunk.js": "./static/js/9221.38a31de2.chunk.js",
- "static/js/9031.d8ddf273.chunk.js": "./static/js/9031.d8ddf273.chunk.js",
- "static/js/9134.a172a7f7.chunk.js": "./static/js/9134.a172a7f7.chunk.js",
- "static/css/1507.e99c33cf.chunk.css": "./static/css/1507.e99c33cf.chunk.css",
- "static/js/1507.a4807651.chunk.js": "./static/js/1507.a4807651.chunk.js",
- "static/js/1030.0c362d0c.chunk.js": "./static/js/1030.0c362d0c.chunk.js",
- "static/js/9145.77b06f48.chunk.js": "./static/js/9145.77b06f48.chunk.js",
- "static/js/8998.6d51ddf2.chunk.js": "./static/js/8998.6d51ddf2.chunk.js",
- "static/js/1501.2b23a1c6.chunk.js": "./static/js/1501.2b23a1c6.chunk.js",
- "static/js/7770.a8aef98b.chunk.js": "./static/js/7770.a8aef98b.chunk.js",
+ "static/js/7295.cfd1690b.chunk.js": "./static/js/7295.cfd1690b.chunk.js",
+ "static/js/7585.ab5a26e5.chunk.js": "./static/js/7585.ab5a26e5.chunk.js",
+ "static/js/4902.04f664fa.chunk.js": "./static/js/4902.04f664fa.chunk.js",
+ "static/js/7847.7319336d.chunk.js": "./static/js/7847.7319336d.chunk.js",
+ "static/js/3097.b19643e9.chunk.js": "./static/js/3097.b19643e9.chunk.js",
+ "static/js/692.aa4b543f.chunk.js": "./static/js/692.aa4b543f.chunk.js",
+ "static/js/8626.d4b77c9f.chunk.js": "./static/js/8626.d4b77c9f.chunk.js",
+ "static/js/8360.c87a8251.chunk.js": "./static/js/8360.c87a8251.chunk.js",
+ "static/js/6577.8452e067.chunk.js": "./static/js/6577.8452e067.chunk.js",
+ "static/js/3875.e4e37704.chunk.js": "./static/js/3875.e4e37704.chunk.js",
+ "static/js/6401.f5081a76.chunk.js": "./static/js/6401.f5081a76.chunk.js",
+ "static/js/2949.7c1ea98c.chunk.js": "./static/js/2949.7c1ea98c.chunk.js",
+ "static/js/3119.e9b6547a.chunk.js": "./static/js/3119.e9b6547a.chunk.js",
+ "static/js/3115.da843172.chunk.js": "./static/js/3115.da843172.chunk.js",
+ "static/js/5643.58815d0f.chunk.js": "./static/js/5643.58815d0f.chunk.js",
+ "static/js/4781.27325faf.chunk.js": "./static/js/4781.27325faf.chunk.js",
+ "static/js/9478.6a568948.chunk.js": "./static/js/9478.6a568948.chunk.js",
+ "static/js/7164.ca69b510.chunk.js": "./static/js/7164.ca69b510.chunk.js",
+ "static/js/4414.ff3ede37.chunk.js": "./static/js/4414.ff3ede37.chunk.js",
+ "static/js/7798.d6a28f0f.chunk.js": "./static/js/7798.d6a28f0f.chunk.js",
+ "static/js/8833.6d5381bf.chunk.js": "./static/js/8833.6d5381bf.chunk.js",
+ "static/js/6526.fb2e4acc.chunk.js": "./static/js/6526.fb2e4acc.chunk.js",
+ "static/js/483.6f698412.chunk.js": "./static/js/483.6f698412.chunk.js",
+ "static/js/5882.ad761d2c.chunk.js": "./static/js/5882.ad761d2c.chunk.js",
+ "static/js/583.7e06d8f7.chunk.js": "./static/js/583.7e06d8f7.chunk.js",
+ "static/js/9467.5eac6111.chunk.js": "./static/js/9467.5eac6111.chunk.js",
+ "static/js/6895.d8bf854d.chunk.js": "./static/js/6895.d8bf854d.chunk.js",
+ "static/js/977.1d5d246f.chunk.js": "./static/js/977.1d5d246f.chunk.js",
+ "static/js/4133.fff44ab1.chunk.js": "./static/js/4133.fff44ab1.chunk.js",
+ "static/css/1367.8bbdd881.chunk.css": "./static/css/1367.8bbdd881.chunk.css",
+ "static/js/1367.7ad56d1c.chunk.js": "./static/js/1367.7ad56d1c.chunk.js",
+ "static/js/3956.802d6679.chunk.js": "./static/js/3956.802d6679.chunk.js",
+ "static/js/9221.b78f1e48.chunk.js": "./static/js/9221.b78f1e48.chunk.js",
+ "static/js/8896.aa552ac4.chunk.js": "./static/js/8896.aa552ac4.chunk.js",
+ "static/js/9134.764884d7.chunk.js": "./static/js/9134.764884d7.chunk.js",
+ "static/css/1507.8bbdd881.chunk.css": "./static/css/1507.8bbdd881.chunk.css",
+ "static/js/1507.979cb39c.chunk.js": "./static/js/1507.979cb39c.chunk.js",
+ "static/js/1030.39fd7796.chunk.js": "./static/js/1030.39fd7796.chunk.js",
+ "static/js/9145.b61c5e46.chunk.js": "./static/js/9145.b61c5e46.chunk.js",
+ "static/js/8998.a5f0b2dc.chunk.js": "./static/js/8998.a5f0b2dc.chunk.js",
+ "static/js/1501.e543ab00.chunk.js": "./static/js/1501.e543ab00.chunk.js",
+ "static/js/7770.611c18cd.chunk.js": "./static/js/7770.611c18cd.chunk.js",
"static/js/426.571c3a27.chunk.js": "./static/js/426.571c3a27.chunk.js",
"static/js/4298.9f1c9963.chunk.js": "./static/js/4298.9f1c9963.chunk.js",
- "static/js/2878.1330cf42.chunk.js": "./static/js/2878.1330cf42.chunk.js",
+ "static/js/2878.6ecef4ed.chunk.js": "./static/js/2878.6ecef4ed.chunk.js",
"static/js/8495.1d26a441.chunk.js": "./static/js/8495.1d26a441.chunk.js",
"static/js/4934.bd3169e8.chunk.js": "./static/js/4934.bd3169e8.chunk.js",
"static/js/9942.28c4ca07.chunk.js": "./static/js/9942.28c4ca07.chunk.js",
- "static/js/7021.cbf7f23a.chunk.js": "./static/js/7021.cbf7f23a.chunk.js",
- "static/js/2684.03e0baba.chunk.js": "./static/js/2684.03e0baba.chunk.js",
- "static/css/2797.e99c33cf.chunk.css": "./static/css/2797.e99c33cf.chunk.css",
- "static/js/2797.69df7d1d.chunk.js": "./static/js/2797.69df7d1d.chunk.js",
- "static/js/8350.ff17d087.chunk.js": "./static/js/8350.ff17d087.chunk.js",
- "static/js/4873.5bde9bed.chunk.js": "./static/js/4873.5bde9bed.chunk.js",
- "static/js/5367.a0c076fc.chunk.js": "./static/js/5367.a0c076fc.chunk.js",
- "static/js/6405.0e2d66a4.chunk.js": "./static/js/6405.0e2d66a4.chunk.js",
- "static/js/5223.218fce49.chunk.js": "./static/js/5223.218fce49.chunk.js",
- "static/js/1799.d2996f85.chunk.js": "./static/js/1799.d2996f85.chunk.js",
- "static/js/9297.0fa667e5.chunk.js": "./static/js/9297.0fa667e5.chunk.js",
- "static/js/711.c9f818ab.chunk.js": "./static/js/711.c9f818ab.chunk.js",
- "static/js/6901.d43d56e6.chunk.js": "./static/js/6901.d43d56e6.chunk.js",
- "static/js/2185.b77a9469.chunk.js": "./static/js/2185.b77a9469.chunk.js",
- "static/js/9968.8cde9579.chunk.js": "./static/js/9968.8cde9579.chunk.js",
- "static/js/2180.26a5c38b.chunk.js": "./static/js/2180.26a5c38b.chunk.js",
+ "static/js/7021.35a1212b.chunk.js": "./static/js/7021.35a1212b.chunk.js",
+ "static/js/2684.73fcefda.chunk.js": "./static/js/2684.73fcefda.chunk.js",
+ "static/css/2797.8bbdd881.chunk.css": "./static/css/2797.8bbdd881.chunk.css",
+ "static/js/2797.6dae3357.chunk.js": "./static/js/2797.6dae3357.chunk.js",
+ "static/js/8350.70bb0791.chunk.js": "./static/js/8350.70bb0791.chunk.js",
+ "static/js/4873.1840dbc4.chunk.js": "./static/js/4873.1840dbc4.chunk.js",
+ "static/js/5367.12b9d328.chunk.js": "./static/js/5367.12b9d328.chunk.js",
+ "static/js/6405.a17792e5.chunk.js": "./static/js/6405.a17792e5.chunk.js",
+ "static/js/5223.d3ef0b66.chunk.js": "./static/js/5223.d3ef0b66.chunk.js",
+ "static/js/1799.b4e6b095.chunk.js": "./static/js/1799.b4e6b095.chunk.js",
+ "static/js/9297.ab07c841.chunk.js": "./static/js/9297.ab07c841.chunk.js",
+ "static/js/3864.01198cc4.chunk.js": "./static/js/3864.01198cc4.chunk.js",
+ "static/js/3839.7de43728.chunk.js": "./static/js/3839.7de43728.chunk.js",
+ "static/js/3034.eeaa9de7.chunk.js": "./static/js/3034.eeaa9de7.chunk.js",
+ "static/css/3905.8bbdd881.chunk.css": "./static/css/3905.8bbdd881.chunk.css",
+ "static/js/3905.640266d7.chunk.js": "./static/js/3905.640266d7.chunk.js",
+ "static/js/711.fbbd2d52.chunk.js": "./static/js/711.fbbd2d52.chunk.js",
+ "static/js/6901.9c779e6d.chunk.js": "./static/js/6901.9c779e6d.chunk.js",
+ "static/js/2185.9f8ebee0.chunk.js": "./static/js/2185.9f8ebee0.chunk.js",
+ "static/js/9968.6da000eb.chunk.js": "./static/js/9968.6da000eb.chunk.js",
+ "static/js/2180.dc0f648b.chunk.js": "./static/js/2180.dc0f648b.chunk.js",
"static/js/8253.bdda69c3.chunk.js": "./static/js/8253.bdda69c3.chunk.js",
- "static/js/3328.64f37bf8.chunk.js": "./static/js/3328.64f37bf8.chunk.js",
- "static/js/1440.8750dde4.chunk.js": "./static/js/1440.8750dde4.chunk.js",
- "static/js/9179.26f8387f.chunk.js": "./static/js/9179.26f8387f.chunk.js",
- "static/js/51.19251cf7.chunk.js": "./static/js/51.19251cf7.chunk.js",
- "static/js/312.770148c8.chunk.js": "./static/js/312.770148c8.chunk.js",
- "static/js/2112.c85537ec.chunk.js": "./static/js/2112.c85537ec.chunk.js",
- "static/js/4619.1abcedba.chunk.js": "./static/js/4619.1abcedba.chunk.js",
- "static/js/8990.4f806e82.chunk.js": "./static/js/8990.4f806e82.chunk.js",
- "static/js/8455.5db6563b.chunk.js": "./static/js/8455.5db6563b.chunk.js",
- "static/css/9682.e99c33cf.chunk.css": "./static/css/9682.e99c33cf.chunk.css",
- "static/js/9682.5c31e74c.chunk.js": "./static/js/9682.5c31e74c.chunk.js",
- "static/js/1604.816d8ab5.chunk.js": "./static/js/1604.816d8ab5.chunk.js",
- "static/js/8391.875d2320.chunk.js": "./static/js/8391.875d2320.chunk.js",
- "static/js/402.46c69861.chunk.js": "./static/js/402.46c69861.chunk.js",
- "static/js/1705.88e02e9a.chunk.js": "./static/js/1705.88e02e9a.chunk.js",
- "static/js/1581.6892440d.chunk.js": "./static/js/1581.6892440d.chunk.js",
- "static/js/455.4b142906.chunk.js": "./static/js/455.4b142906.chunk.js",
- "static/js/2661.ec609143.chunk.js": "./static/js/2661.ec609143.chunk.js",
- "static/js/889.bba47c51.chunk.js": "./static/js/889.bba47c51.chunk.js",
- "static/js/9088.17f4cb12.chunk.js": "./static/js/9088.17f4cb12.chunk.js",
- "static/js/247.f860e311.chunk.js": "./static/js/247.f860e311.chunk.js",
- "static/js/2408.4f7b17cd.chunk.js": "./static/js/2408.4f7b17cd.chunk.js",
+ "static/js/9918.80f0bfbe.chunk.js": "./static/js/9918.80f0bfbe.chunk.js",
+ "static/js/1440.b5fbee60.chunk.js": "./static/js/1440.b5fbee60.chunk.js",
+ "static/js/9179.962d592f.chunk.js": "./static/js/9179.962d592f.chunk.js",
+ "static/js/51.ab1fa6c3.chunk.js": "./static/js/51.ab1fa6c3.chunk.js",
+ "static/js/312.1397c0a8.chunk.js": "./static/js/312.1397c0a8.chunk.js",
+ "static/js/2112.1820b142.chunk.js": "./static/js/2112.1820b142.chunk.js",
+ "static/js/2032.4598ddc6.chunk.js": "./static/js/2032.4598ddc6.chunk.js",
+ "static/js/4619.beba8be5.chunk.js": "./static/js/4619.beba8be5.chunk.js",
+ "static/js/8990.9cbc5e71.chunk.js": "./static/js/8990.9cbc5e71.chunk.js",
+ "static/js/8455.416190cd.chunk.js": "./static/js/8455.416190cd.chunk.js",
+ "static/css/9682.8bbdd881.chunk.css": "./static/css/9682.8bbdd881.chunk.css",
+ "static/js/9682.bf1d4c51.chunk.js": "./static/js/9682.bf1d4c51.chunk.js",
+ "static/js/1604.6758414b.chunk.js": "./static/js/1604.6758414b.chunk.js",
+ "static/js/9952.5ed9b96a.chunk.js": "./static/js/9952.5ed9b96a.chunk.js",
+ "static/js/402.2318f11d.chunk.js": "./static/js/402.2318f11d.chunk.js",
+ "static/js/1705.3ecc6022.chunk.js": "./static/js/1705.3ecc6022.chunk.js",
+ "static/js/1581.16dc83a0.chunk.js": "./static/js/1581.16dc83a0.chunk.js",
+ "static/js/455.1ab65317.chunk.js": "./static/js/455.1ab65317.chunk.js",
+ "static/js/2661.af7d8b4d.chunk.js": "./static/js/2661.af7d8b4d.chunk.js",
+ "static/js/889.bc3ac140.chunk.js": "./static/js/889.bc3ac140.chunk.js",
+ "static/js/9088.89fcd230.chunk.js": "./static/js/9088.89fcd230.chunk.js",
+ "static/js/247.37adf47a.chunk.js": "./static/js/247.37adf47a.chunk.js",
+ "static/js/2408.b23e320f.chunk.js": "./static/js/2408.b23e320f.chunk.js",
"static/js/5171.250547aa.chunk.js": "./static/js/5171.250547aa.chunk.js",
"static/js/3691.fbd31aba.chunk.js": "./static/js/3691.fbd31aba.chunk.js",
"static/js/2813.a175de7f.chunk.js": "./static/js/2813.a175de7f.chunk.js",
- "static/js/9779.6d822fe6.chunk.js": "./static/js/9779.6d822fe6.chunk.js",
+ "static/js/9779.4f8ac570.chunk.js": "./static/js/9779.4f8ac570.chunk.js",
"static/js/3801.e125737d.chunk.js": "./static/js/3801.e125737d.chunk.js",
"static/js/1918.b61ed655.chunk.js": "./static/js/1918.b61ed655.chunk.js",
"static/js/1373.c65e2a03.chunk.js": "./static/js/1373.c65e2a03.chunk.js",
"static/js/2011.8a8740c8.chunk.js": "./static/js/2011.8a8740c8.chunk.js",
"static/js/9683.a80ed946.chunk.js": "./static/js/9683.a80ed946.chunk.js",
"static/js/3909.d99c71e5.chunk.js": "./static/js/3909.d99c71e5.chunk.js",
- "static/js/6510.29948999.chunk.js": "./static/js/6510.29948999.chunk.js",
+ "static/js/7893.f547add4.chunk.js": "./static/js/7893.f547add4.chunk.js",
"static/js/1267.b6db32f4.chunk.js": "./static/js/1267.b6db32f4.chunk.js",
"static/js/6172.fb47bd8a.chunk.js": "./static/js/6172.fb47bd8a.chunk.js",
+ "static/js/6621.4eb56e28.chunk.js": "./static/js/6621.4eb56e28.chunk.js",
"static/js/696.a5768242.chunk.js": "./static/js/696.a5768242.chunk.js",
+ "static/js/8725.7ed02e0c.chunk.js": "./static/js/8725.7ed02e0c.chunk.js",
"static/js/3388.d7ba6c88.chunk.js": "./static/js/3388.d7ba6c88.chunk.js",
"static/js/59.2f1cdf77.chunk.js": "./static/js/59.2f1cdf77.chunk.js",
- "static/js/8896.57d6fdd4.chunk.js": "./static/js/8896.57d6fdd4.chunk.js",
"static/js/5740.76f72bd3.chunk.js": "./static/js/5740.76f72bd3.chunk.js",
+ "static/js/4021.b25d428e.chunk.js": "./static/js/4021.b25d428e.chunk.js",
"static/js/6484.7b5e3559.chunk.js": "./static/js/6484.7b5e3559.chunk.js",
"static/js/7142.2a4bff95.chunk.js": "./static/js/7142.2a4bff95.chunk.js",
"static/js/2691.2b7d55be.chunk.js": "./static/js/2691.2b7d55be.chunk.js",
"static/js/1790.f58a9b74.chunk.js": "./static/js/1790.f58a9b74.chunk.js",
"static/js/2331.977274a2.chunk.js": "./static/js/2331.977274a2.chunk.js",
"static/js/6474.761eaa0f.chunk.js": "./static/js/6474.761eaa0f.chunk.js",
- "static/js/2983.66d9f91c.chunk.js": "./static/js/2983.66d9f91c.chunk.js",
- "static/js/5861.9b443eee.chunk.js": "./static/js/5861.9b443eee.chunk.js",
- "static/js/7873.0f0682a9.chunk.js": "./static/js/7873.0f0682a9.chunk.js",
- "static/js/537.ac3e6c1f.chunk.js": "./static/js/537.ac3e6c1f.chunk.js",
- "static/js/2763.0e8b50c7.chunk.js": "./static/js/2763.0e8b50c7.chunk.js",
+ "static/js/2983.ca089e19.chunk.js": "./static/js/2983.ca089e19.chunk.js",
+ "static/js/5861.37a1f0f2.chunk.js": "./static/js/5861.37a1f0f2.chunk.js",
+ "static/js/7873.7374a5f3.chunk.js": "./static/js/7873.7374a5f3.chunk.js",
+ "static/js/537.561ba81d.chunk.js": "./static/js/537.561ba81d.chunk.js",
+ "static/js/2763.7c4fb5a0.chunk.js": "./static/js/2763.7c4fb5a0.chunk.js",
"static/media/videoBG.mp4": "./static/media/videoBG.17363418b3c2246a0e27.mp4",
"static/media/loginAnimationPoster.png": "./static/media/loginAnimationPoster.9aa924bfe619e71d5d29.png",
"static/media/Inter-BoldItalic.woff": "./static/media/Inter-BoldItalic.b376885042f6c961a541.woff",
@@ -182,170 +191,179 @@
"static/media/Inter-Thin.woff2": "./static/media/Inter-Thin.fff2a096db014f6239d4.woff2",
"static/media/Inter-Regular.woff2": "./static/media/Inter-Regular.c8ba52b05a9ef10f4758.woff2",
"index.html": "./index.html",
- "main.b20a708b.css.map": "./static/css/main.b20a708b.css.map",
- "main.e02e3a76.js.map": "./static/js/main.e02e3a76.js.map",
+ "main.7c092a9d.css.map": "./static/css/main.7c092a9d.css.map",
+ "main.c7a9c285.js.map": "./static/js/main.c7a9c285.js.map",
"1260.4885d31b.chunk.js.map": "./static/js/1260.4885d31b.chunk.js.map",
- "6914.98367537.chunk.js.map": "./static/js/6914.98367537.chunk.js.map",
- "4209.d713bd2e.chunk.js.map": "./static/js/4209.d713bd2e.chunk.js.map",
- "1829.dddf5fc0.chunk.js.map": "./static/js/1829.dddf5fc0.chunk.js.map",
- "4455.aceaa0c6.chunk.js.map": "./static/js/4455.aceaa0c6.chunk.js.map",
- "5088.2a540e0f.chunk.js.map": "./static/js/5088.2a540e0f.chunk.js.map",
- "5140.c3d0a706.chunk.js.map": "./static/js/5140.c3d0a706.chunk.js.map",
+ "6914.9cc3ab4e.chunk.js.map": "./static/js/6914.9cc3ab4e.chunk.js.map",
+ "4209.06b0245b.chunk.js.map": "./static/js/4209.06b0245b.chunk.js.map",
+ "1829.ebfd458a.chunk.js.map": "./static/js/1829.ebfd458a.chunk.js.map",
+ "4455.93668d49.chunk.js.map": "./static/js/4455.93668d49.chunk.js.map",
+ "5088.e2dea68b.chunk.js.map": "./static/js/5088.e2dea68b.chunk.js.map",
+ "5140.d55a77e3.chunk.js.map": "./static/js/5140.d55a77e3.chunk.js.map",
"852.952af138.chunk.js.map": "./static/js/852.952af138.chunk.js.map",
- "1275.e99c33cf.chunk.css.map": "./static/css/1275.e99c33cf.chunk.css.map",
- "1275.3857a963.chunk.js.map": "./static/js/1275.3857a963.chunk.js.map",
+ "1275.8bbdd881.chunk.css.map": "./static/css/1275.8bbdd881.chunk.css.map",
+ "1275.1d84ee6a.chunk.js.map": "./static/js/1275.1d84ee6a.chunk.js.map",
"3176.59846ccd.chunk.js.map": "./static/js/3176.59846ccd.chunk.js.map",
- "6137.90580e27.chunk.js.map": "./static/js/6137.90580e27.chunk.js.map",
- "5995.aee721bd.chunk.js.map": "./static/js/5995.aee721bd.chunk.js.map",
- "7092.98cb7d30.chunk.js.map": "./static/js/7092.98cb7d30.chunk.js.map",
- "2338.0f7ba0f5.chunk.js.map": "./static/js/2338.0f7ba0f5.chunk.js.map",
- "4335.e38511e4.chunk.js.map": "./static/js/4335.e38511e4.chunk.js.map",
- "3061.12708207.chunk.js.map": "./static/js/3061.12708207.chunk.js.map",
- "6763.d2f4f7b7.chunk.js.map": "./static/js/6763.d2f4f7b7.chunk.js.map",
- "3543.63b7961a.chunk.js.map": "./static/js/3543.63b7961a.chunk.js.map",
- "4061.bc2708cb.chunk.js.map": "./static/js/4061.bc2708cb.chunk.js.map",
- "5112.145171e2.chunk.js.map": "./static/js/5112.145171e2.chunk.js.map",
- "9611.dc6938ca.chunk.js.map": "./static/js/9611.dc6938ca.chunk.js.map",
- "2637.a78c67b6.chunk.js.map": "./static/js/2637.a78c67b6.chunk.js.map",
- "5503.e99c33cf.chunk.css.map": "./static/css/5503.e99c33cf.chunk.css.map",
- "5503.ede909ff.chunk.js.map": "./static/js/5503.ede909ff.chunk.js.map",
- "5926.916c8233.chunk.js.map": "./static/js/5926.916c8233.chunk.js.map",
- "6040.c297c8b1.chunk.js.map": "./static/js/6040.c297c8b1.chunk.js.map",
- "701.c1e0e69c.chunk.js.map": "./static/js/701.c1e0e69c.chunk.js.map",
+ "6137.7535bbb1.chunk.js.map": "./static/js/6137.7535bbb1.chunk.js.map",
+ "5995.686a9a3d.chunk.js.map": "./static/js/5995.686a9a3d.chunk.js.map",
+ "9251.a9e6e404.chunk.js.map": "./static/js/9251.a9e6e404.chunk.js.map",
+ "2338.d265a623.chunk.js.map": "./static/js/2338.d265a623.chunk.js.map",
+ "4335.fe71a24c.chunk.js.map": "./static/js/4335.fe71a24c.chunk.js.map",
+ "3061.ef8f8361.chunk.js.map": "./static/js/3061.ef8f8361.chunk.js.map",
+ "3832.064838f9.chunk.js.map": "./static/js/3832.064838f9.chunk.js.map",
+ "3543.b27540db.chunk.js.map": "./static/js/3543.b27540db.chunk.js.map",
+ "4061.21163e18.chunk.js.map": "./static/js/4061.21163e18.chunk.js.map",
+ "5112.1e71afd4.chunk.js.map": "./static/js/5112.1e71afd4.chunk.js.map",
+ "9611.7f153cb9.chunk.js.map": "./static/js/9611.7f153cb9.chunk.js.map",
+ "2637.a7bb7b5b.chunk.js.map": "./static/js/2637.a7bb7b5b.chunk.js.map",
+ "5503.8bbdd881.chunk.css.map": "./static/css/5503.8bbdd881.chunk.css.map",
+ "5503.99647175.chunk.js.map": "./static/js/5503.99647175.chunk.js.map",
+ "5926.b3d18dd7.chunk.js.map": "./static/js/5926.b3d18dd7.chunk.js.map",
+ "6040.e12da05d.chunk.js.map": "./static/js/6040.e12da05d.chunk.js.map",
+ "701.c438988e.chunk.js.map": "./static/js/701.c438988e.chunk.js.map",
"7821.150c08fd.chunk.js.map": "./static/js/7821.150c08fd.chunk.js.map",
- "6995.e99c33cf.chunk.css.map": "./static/css/6995.e99c33cf.chunk.css.map",
- "6995.b765bc2f.chunk.js.map": "./static/js/6995.b765bc2f.chunk.js.map",
- "4131.498b212f.chunk.js.map": "./static/js/4131.498b212f.chunk.js.map",
- "343.e99c33cf.chunk.css.map": "./static/css/343.e99c33cf.chunk.css.map",
- "343.0d456511.chunk.js.map": "./static/js/343.0d456511.chunk.js.map",
- "3549.e99c33cf.chunk.css.map": "./static/css/3549.e99c33cf.chunk.css.map",
- "3549.dbf06ae0.chunk.js.map": "./static/js/3549.dbf06ae0.chunk.js.map",
- "5517.e99c33cf.chunk.css.map": "./static/css/5517.e99c33cf.chunk.css.map",
- "5517.c2167d52.chunk.js.map": "./static/js/5517.c2167d52.chunk.js.map",
- "2555.acd8bfbf.chunk.js.map": "./static/js/2555.acd8bfbf.chunk.js.map",
+ "6995.8bbdd881.chunk.css.map": "./static/css/6995.8bbdd881.chunk.css.map",
+ "6995.5b180444.chunk.js.map": "./static/js/6995.5b180444.chunk.js.map",
+ "4131.fb6eaf02.chunk.js.map": "./static/js/4131.fb6eaf02.chunk.js.map",
+ "343.8bbdd881.chunk.css.map": "./static/css/343.8bbdd881.chunk.css.map",
+ "343.08a3aa1e.chunk.js.map": "./static/js/343.08a3aa1e.chunk.js.map",
+ "3549.8bbdd881.chunk.css.map": "./static/css/3549.8bbdd881.chunk.css.map",
+ "3549.4d424641.chunk.js.map": "./static/js/3549.4d424641.chunk.js.map",
+ "5517.8bbdd881.chunk.css.map": "./static/css/5517.8bbdd881.chunk.css.map",
+ "5517.c01a8b7c.chunk.js.map": "./static/js/5517.c01a8b7c.chunk.js.map",
+ "2555.da84d5ce.chunk.js.map": "./static/js/2555.da84d5ce.chunk.js.map",
"7486.83e0d248.chunk.js.map": "./static/js/7486.83e0d248.chunk.js.map",
"1377.6fbc40f3.chunk.js.map": "./static/js/1377.6fbc40f3.chunk.js.map",
- "4672.a4d46683.chunk.js.map": "./static/js/4672.a4d46683.chunk.js.map",
- "2516.c5c34c4d.chunk.js.map": "./static/js/2516.c5c34c4d.chunk.js.map",
+ "4672.df68fa8d.chunk.js.map": "./static/js/4672.df68fa8d.chunk.js.map",
+ "2516.6c64276a.chunk.js.map": "./static/js/2516.6c64276a.chunk.js.map",
"2759.e83946f0.chunk.js.map": "./static/js/2759.e83946f0.chunk.js.map",
- "7295.acbcda52.chunk.js.map": "./static/js/7295.acbcda52.chunk.js.map",
- "7585.22a36735.chunk.js.map": "./static/js/7585.22a36735.chunk.js.map",
- "4902.0ede76f0.chunk.js.map": "./static/js/4902.0ede76f0.chunk.js.map",
- "7847.e49a6564.chunk.js.map": "./static/js/7847.e49a6564.chunk.js.map",
- "3097.c627671b.chunk.js.map": "./static/js/3097.c627671b.chunk.js.map",
- "692.6c4b6abb.chunk.js.map": "./static/js/692.6c4b6abb.chunk.js.map",
- "8626.198c0509.chunk.js.map": "./static/js/8626.198c0509.chunk.js.map",
- "8360.19c25a88.chunk.js.map": "./static/js/8360.19c25a88.chunk.js.map",
- "6577.caaa5471.chunk.js.map": "./static/js/6577.caaa5471.chunk.js.map",
- "3875.68ff4b06.chunk.js.map": "./static/js/3875.68ff4b06.chunk.js.map",
- "6401.2d1d41e3.chunk.js.map": "./static/js/6401.2d1d41e3.chunk.js.map",
- "2949.2cc2d873.chunk.js.map": "./static/js/2949.2cc2d873.chunk.js.map",
- "3119.1664ba97.chunk.js.map": "./static/js/3119.1664ba97.chunk.js.map",
- "5643.d7b117e6.chunk.js.map": "./static/js/5643.d7b117e6.chunk.js.map",
- "4781.f4794912.chunk.js.map": "./static/js/4781.f4794912.chunk.js.map",
- "9478.b1688b00.chunk.js.map": "./static/js/9478.b1688b00.chunk.js.map",
- "7164.3762a0c0.chunk.js.map": "./static/js/7164.3762a0c0.chunk.js.map",
- "4414.8d9d85ec.chunk.js.map": "./static/js/4414.8d9d85ec.chunk.js.map",
- "7798.88e1551b.chunk.js.map": "./static/js/7798.88e1551b.chunk.js.map",
- "8833.cc57fe33.chunk.js.map": "./static/js/8833.cc57fe33.chunk.js.map",
- "6526.a725f558.chunk.js.map": "./static/js/6526.a725f558.chunk.js.map",
- "483.f2287673.chunk.js.map": "./static/js/483.f2287673.chunk.js.map",
- "5882.6b35beab.chunk.js.map": "./static/js/5882.6b35beab.chunk.js.map",
- "5690.770e1ac1.chunk.js.map": "./static/js/5690.770e1ac1.chunk.js.map",
- "9467.0ba82b58.chunk.js.map": "./static/js/9467.0ba82b58.chunk.js.map",
- "6895.8d73d55a.chunk.js.map": "./static/js/6895.8d73d55a.chunk.js.map",
- "8277.78032a3f.chunk.js.map": "./static/js/8277.78032a3f.chunk.js.map",
- "4133.4da17d39.chunk.js.map": "./static/js/4133.4da17d39.chunk.js.map",
- "1367.e99c33cf.chunk.css.map": "./static/css/1367.e99c33cf.chunk.css.map",
- "1367.e7a5805d.chunk.js.map": "./static/js/1367.e7a5805d.chunk.js.map",
- "3956.81b98a64.chunk.js.map": "./static/js/3956.81b98a64.chunk.js.map",
- "9221.38a31de2.chunk.js.map": "./static/js/9221.38a31de2.chunk.js.map",
- "9031.d8ddf273.chunk.js.map": "./static/js/9031.d8ddf273.chunk.js.map",
- "9134.a172a7f7.chunk.js.map": "./static/js/9134.a172a7f7.chunk.js.map",
- "1507.e99c33cf.chunk.css.map": "./static/css/1507.e99c33cf.chunk.css.map",
- "1507.a4807651.chunk.js.map": "./static/js/1507.a4807651.chunk.js.map",
- "1030.0c362d0c.chunk.js.map": "./static/js/1030.0c362d0c.chunk.js.map",
- "9145.77b06f48.chunk.js.map": "./static/js/9145.77b06f48.chunk.js.map",
- "8998.6d51ddf2.chunk.js.map": "./static/js/8998.6d51ddf2.chunk.js.map",
- "1501.2b23a1c6.chunk.js.map": "./static/js/1501.2b23a1c6.chunk.js.map",
- "7770.a8aef98b.chunk.js.map": "./static/js/7770.a8aef98b.chunk.js.map",
+ "7295.cfd1690b.chunk.js.map": "./static/js/7295.cfd1690b.chunk.js.map",
+ "7585.ab5a26e5.chunk.js.map": "./static/js/7585.ab5a26e5.chunk.js.map",
+ "4902.04f664fa.chunk.js.map": "./static/js/4902.04f664fa.chunk.js.map",
+ "7847.7319336d.chunk.js.map": "./static/js/7847.7319336d.chunk.js.map",
+ "3097.b19643e9.chunk.js.map": "./static/js/3097.b19643e9.chunk.js.map",
+ "692.aa4b543f.chunk.js.map": "./static/js/692.aa4b543f.chunk.js.map",
+ "8626.d4b77c9f.chunk.js.map": "./static/js/8626.d4b77c9f.chunk.js.map",
+ "8360.c87a8251.chunk.js.map": "./static/js/8360.c87a8251.chunk.js.map",
+ "6577.8452e067.chunk.js.map": "./static/js/6577.8452e067.chunk.js.map",
+ "3875.e4e37704.chunk.js.map": "./static/js/3875.e4e37704.chunk.js.map",
+ "6401.f5081a76.chunk.js.map": "./static/js/6401.f5081a76.chunk.js.map",
+ "2949.7c1ea98c.chunk.js.map": "./static/js/2949.7c1ea98c.chunk.js.map",
+ "3119.e9b6547a.chunk.js.map": "./static/js/3119.e9b6547a.chunk.js.map",
+ "3115.da843172.chunk.js.map": "./static/js/3115.da843172.chunk.js.map",
+ "5643.58815d0f.chunk.js.map": "./static/js/5643.58815d0f.chunk.js.map",
+ "4781.27325faf.chunk.js.map": "./static/js/4781.27325faf.chunk.js.map",
+ "9478.6a568948.chunk.js.map": "./static/js/9478.6a568948.chunk.js.map",
+ "7164.ca69b510.chunk.js.map": "./static/js/7164.ca69b510.chunk.js.map",
+ "4414.ff3ede37.chunk.js.map": "./static/js/4414.ff3ede37.chunk.js.map",
+ "7798.d6a28f0f.chunk.js.map": "./static/js/7798.d6a28f0f.chunk.js.map",
+ "8833.6d5381bf.chunk.js.map": "./static/js/8833.6d5381bf.chunk.js.map",
+ "6526.fb2e4acc.chunk.js.map": "./static/js/6526.fb2e4acc.chunk.js.map",
+ "483.6f698412.chunk.js.map": "./static/js/483.6f698412.chunk.js.map",
+ "5882.ad761d2c.chunk.js.map": "./static/js/5882.ad761d2c.chunk.js.map",
+ "583.7e06d8f7.chunk.js.map": "./static/js/583.7e06d8f7.chunk.js.map",
+ "9467.5eac6111.chunk.js.map": "./static/js/9467.5eac6111.chunk.js.map",
+ "6895.d8bf854d.chunk.js.map": "./static/js/6895.d8bf854d.chunk.js.map",
+ "977.1d5d246f.chunk.js.map": "./static/js/977.1d5d246f.chunk.js.map",
+ "4133.fff44ab1.chunk.js.map": "./static/js/4133.fff44ab1.chunk.js.map",
+ "1367.8bbdd881.chunk.css.map": "./static/css/1367.8bbdd881.chunk.css.map",
+ "1367.7ad56d1c.chunk.js.map": "./static/js/1367.7ad56d1c.chunk.js.map",
+ "3956.802d6679.chunk.js.map": "./static/js/3956.802d6679.chunk.js.map",
+ "9221.b78f1e48.chunk.js.map": "./static/js/9221.b78f1e48.chunk.js.map",
+ "8896.aa552ac4.chunk.js.map": "./static/js/8896.aa552ac4.chunk.js.map",
+ "9134.764884d7.chunk.js.map": "./static/js/9134.764884d7.chunk.js.map",
+ "1507.8bbdd881.chunk.css.map": "./static/css/1507.8bbdd881.chunk.css.map",
+ "1507.979cb39c.chunk.js.map": "./static/js/1507.979cb39c.chunk.js.map",
+ "1030.39fd7796.chunk.js.map": "./static/js/1030.39fd7796.chunk.js.map",
+ "9145.b61c5e46.chunk.js.map": "./static/js/9145.b61c5e46.chunk.js.map",
+ "8998.a5f0b2dc.chunk.js.map": "./static/js/8998.a5f0b2dc.chunk.js.map",
+ "1501.e543ab00.chunk.js.map": "./static/js/1501.e543ab00.chunk.js.map",
+ "7770.611c18cd.chunk.js.map": "./static/js/7770.611c18cd.chunk.js.map",
"426.571c3a27.chunk.js.map": "./static/js/426.571c3a27.chunk.js.map",
"4298.9f1c9963.chunk.js.map": "./static/js/4298.9f1c9963.chunk.js.map",
- "2878.1330cf42.chunk.js.map": "./static/js/2878.1330cf42.chunk.js.map",
+ "2878.6ecef4ed.chunk.js.map": "./static/js/2878.6ecef4ed.chunk.js.map",
"8495.1d26a441.chunk.js.map": "./static/js/8495.1d26a441.chunk.js.map",
"4934.bd3169e8.chunk.js.map": "./static/js/4934.bd3169e8.chunk.js.map",
"9942.28c4ca07.chunk.js.map": "./static/js/9942.28c4ca07.chunk.js.map",
- "7021.cbf7f23a.chunk.js.map": "./static/js/7021.cbf7f23a.chunk.js.map",
- "2684.03e0baba.chunk.js.map": "./static/js/2684.03e0baba.chunk.js.map",
- "2797.e99c33cf.chunk.css.map": "./static/css/2797.e99c33cf.chunk.css.map",
- "2797.69df7d1d.chunk.js.map": "./static/js/2797.69df7d1d.chunk.js.map",
- "8350.ff17d087.chunk.js.map": "./static/js/8350.ff17d087.chunk.js.map",
- "4873.5bde9bed.chunk.js.map": "./static/js/4873.5bde9bed.chunk.js.map",
- "5367.a0c076fc.chunk.js.map": "./static/js/5367.a0c076fc.chunk.js.map",
- "6405.0e2d66a4.chunk.js.map": "./static/js/6405.0e2d66a4.chunk.js.map",
- "5223.218fce49.chunk.js.map": "./static/js/5223.218fce49.chunk.js.map",
- "1799.d2996f85.chunk.js.map": "./static/js/1799.d2996f85.chunk.js.map",
- "9297.0fa667e5.chunk.js.map": "./static/js/9297.0fa667e5.chunk.js.map",
- "711.c9f818ab.chunk.js.map": "./static/js/711.c9f818ab.chunk.js.map",
- "6901.d43d56e6.chunk.js.map": "./static/js/6901.d43d56e6.chunk.js.map",
- "2185.b77a9469.chunk.js.map": "./static/js/2185.b77a9469.chunk.js.map",
- "9968.8cde9579.chunk.js.map": "./static/js/9968.8cde9579.chunk.js.map",
- "2180.26a5c38b.chunk.js.map": "./static/js/2180.26a5c38b.chunk.js.map",
+ "7021.35a1212b.chunk.js.map": "./static/js/7021.35a1212b.chunk.js.map",
+ "2684.73fcefda.chunk.js.map": "./static/js/2684.73fcefda.chunk.js.map",
+ "2797.8bbdd881.chunk.css.map": "./static/css/2797.8bbdd881.chunk.css.map",
+ "2797.6dae3357.chunk.js.map": "./static/js/2797.6dae3357.chunk.js.map",
+ "8350.70bb0791.chunk.js.map": "./static/js/8350.70bb0791.chunk.js.map",
+ "4873.1840dbc4.chunk.js.map": "./static/js/4873.1840dbc4.chunk.js.map",
+ "5367.12b9d328.chunk.js.map": "./static/js/5367.12b9d328.chunk.js.map",
+ "6405.a17792e5.chunk.js.map": "./static/js/6405.a17792e5.chunk.js.map",
+ "5223.d3ef0b66.chunk.js.map": "./static/js/5223.d3ef0b66.chunk.js.map",
+ "1799.b4e6b095.chunk.js.map": "./static/js/1799.b4e6b095.chunk.js.map",
+ "9297.ab07c841.chunk.js.map": "./static/js/9297.ab07c841.chunk.js.map",
+ "3864.01198cc4.chunk.js.map": "./static/js/3864.01198cc4.chunk.js.map",
+ "3839.7de43728.chunk.js.map": "./static/js/3839.7de43728.chunk.js.map",
+ "3034.eeaa9de7.chunk.js.map": "./static/js/3034.eeaa9de7.chunk.js.map",
+ "3905.8bbdd881.chunk.css.map": "./static/css/3905.8bbdd881.chunk.css.map",
+ "3905.640266d7.chunk.js.map": "./static/js/3905.640266d7.chunk.js.map",
+ "711.fbbd2d52.chunk.js.map": "./static/js/711.fbbd2d52.chunk.js.map",
+ "6901.9c779e6d.chunk.js.map": "./static/js/6901.9c779e6d.chunk.js.map",
+ "2185.9f8ebee0.chunk.js.map": "./static/js/2185.9f8ebee0.chunk.js.map",
+ "9968.6da000eb.chunk.js.map": "./static/js/9968.6da000eb.chunk.js.map",
+ "2180.dc0f648b.chunk.js.map": "./static/js/2180.dc0f648b.chunk.js.map",
"8253.bdda69c3.chunk.js.map": "./static/js/8253.bdda69c3.chunk.js.map",
- "3328.64f37bf8.chunk.js.map": "./static/js/3328.64f37bf8.chunk.js.map",
- "1440.8750dde4.chunk.js.map": "./static/js/1440.8750dde4.chunk.js.map",
- "9179.26f8387f.chunk.js.map": "./static/js/9179.26f8387f.chunk.js.map",
- "51.19251cf7.chunk.js.map": "./static/js/51.19251cf7.chunk.js.map",
- "312.770148c8.chunk.js.map": "./static/js/312.770148c8.chunk.js.map",
- "2112.c85537ec.chunk.js.map": "./static/js/2112.c85537ec.chunk.js.map",
- "4619.1abcedba.chunk.js.map": "./static/js/4619.1abcedba.chunk.js.map",
- "8990.4f806e82.chunk.js.map": "./static/js/8990.4f806e82.chunk.js.map",
- "8455.5db6563b.chunk.js.map": "./static/js/8455.5db6563b.chunk.js.map",
- "9682.e99c33cf.chunk.css.map": "./static/css/9682.e99c33cf.chunk.css.map",
- "9682.5c31e74c.chunk.js.map": "./static/js/9682.5c31e74c.chunk.js.map",
- "1604.816d8ab5.chunk.js.map": "./static/js/1604.816d8ab5.chunk.js.map",
- "8391.875d2320.chunk.js.map": "./static/js/8391.875d2320.chunk.js.map",
- "402.46c69861.chunk.js.map": "./static/js/402.46c69861.chunk.js.map",
- "1705.88e02e9a.chunk.js.map": "./static/js/1705.88e02e9a.chunk.js.map",
- "1581.6892440d.chunk.js.map": "./static/js/1581.6892440d.chunk.js.map",
- "455.4b142906.chunk.js.map": "./static/js/455.4b142906.chunk.js.map",
- "2661.ec609143.chunk.js.map": "./static/js/2661.ec609143.chunk.js.map",
- "889.bba47c51.chunk.js.map": "./static/js/889.bba47c51.chunk.js.map",
- "9088.17f4cb12.chunk.js.map": "./static/js/9088.17f4cb12.chunk.js.map",
- "247.f860e311.chunk.js.map": "./static/js/247.f860e311.chunk.js.map",
- "2408.4f7b17cd.chunk.js.map": "./static/js/2408.4f7b17cd.chunk.js.map",
+ "9918.80f0bfbe.chunk.js.map": "./static/js/9918.80f0bfbe.chunk.js.map",
+ "1440.b5fbee60.chunk.js.map": "./static/js/1440.b5fbee60.chunk.js.map",
+ "9179.962d592f.chunk.js.map": "./static/js/9179.962d592f.chunk.js.map",
+ "51.ab1fa6c3.chunk.js.map": "./static/js/51.ab1fa6c3.chunk.js.map",
+ "312.1397c0a8.chunk.js.map": "./static/js/312.1397c0a8.chunk.js.map",
+ "2112.1820b142.chunk.js.map": "./static/js/2112.1820b142.chunk.js.map",
+ "2032.4598ddc6.chunk.js.map": "./static/js/2032.4598ddc6.chunk.js.map",
+ "4619.beba8be5.chunk.js.map": "./static/js/4619.beba8be5.chunk.js.map",
+ "8990.9cbc5e71.chunk.js.map": "./static/js/8990.9cbc5e71.chunk.js.map",
+ "8455.416190cd.chunk.js.map": "./static/js/8455.416190cd.chunk.js.map",
+ "9682.8bbdd881.chunk.css.map": "./static/css/9682.8bbdd881.chunk.css.map",
+ "9682.bf1d4c51.chunk.js.map": "./static/js/9682.bf1d4c51.chunk.js.map",
+ "1604.6758414b.chunk.js.map": "./static/js/1604.6758414b.chunk.js.map",
+ "9952.5ed9b96a.chunk.js.map": "./static/js/9952.5ed9b96a.chunk.js.map",
+ "402.2318f11d.chunk.js.map": "./static/js/402.2318f11d.chunk.js.map",
+ "1705.3ecc6022.chunk.js.map": "./static/js/1705.3ecc6022.chunk.js.map",
+ "1581.16dc83a0.chunk.js.map": "./static/js/1581.16dc83a0.chunk.js.map",
+ "455.1ab65317.chunk.js.map": "./static/js/455.1ab65317.chunk.js.map",
+ "2661.af7d8b4d.chunk.js.map": "./static/js/2661.af7d8b4d.chunk.js.map",
+ "889.bc3ac140.chunk.js.map": "./static/js/889.bc3ac140.chunk.js.map",
+ "9088.89fcd230.chunk.js.map": "./static/js/9088.89fcd230.chunk.js.map",
+ "247.37adf47a.chunk.js.map": "./static/js/247.37adf47a.chunk.js.map",
+ "2408.b23e320f.chunk.js.map": "./static/js/2408.b23e320f.chunk.js.map",
"5171.250547aa.chunk.js.map": "./static/js/5171.250547aa.chunk.js.map",
"3691.fbd31aba.chunk.js.map": "./static/js/3691.fbd31aba.chunk.js.map",
"2813.a175de7f.chunk.js.map": "./static/js/2813.a175de7f.chunk.js.map",
- "9779.6d822fe6.chunk.js.map": "./static/js/9779.6d822fe6.chunk.js.map",
+ "9779.4f8ac570.chunk.js.map": "./static/js/9779.4f8ac570.chunk.js.map",
"3801.e125737d.chunk.js.map": "./static/js/3801.e125737d.chunk.js.map",
"1918.b61ed655.chunk.js.map": "./static/js/1918.b61ed655.chunk.js.map",
"1373.c65e2a03.chunk.js.map": "./static/js/1373.c65e2a03.chunk.js.map",
"2011.8a8740c8.chunk.js.map": "./static/js/2011.8a8740c8.chunk.js.map",
"9683.a80ed946.chunk.js.map": "./static/js/9683.a80ed946.chunk.js.map",
"3909.d99c71e5.chunk.js.map": "./static/js/3909.d99c71e5.chunk.js.map",
- "6510.29948999.chunk.js.map": "./static/js/6510.29948999.chunk.js.map",
+ "7893.f547add4.chunk.js.map": "./static/js/7893.f547add4.chunk.js.map",
"1267.b6db32f4.chunk.js.map": "./static/js/1267.b6db32f4.chunk.js.map",
"6172.fb47bd8a.chunk.js.map": "./static/js/6172.fb47bd8a.chunk.js.map",
+ "6621.4eb56e28.chunk.js.map": "./static/js/6621.4eb56e28.chunk.js.map",
"696.a5768242.chunk.js.map": "./static/js/696.a5768242.chunk.js.map",
+ "8725.7ed02e0c.chunk.js.map": "./static/js/8725.7ed02e0c.chunk.js.map",
"3388.d7ba6c88.chunk.js.map": "./static/js/3388.d7ba6c88.chunk.js.map",
"59.2f1cdf77.chunk.js.map": "./static/js/59.2f1cdf77.chunk.js.map",
- "8896.57d6fdd4.chunk.js.map": "./static/js/8896.57d6fdd4.chunk.js.map",
"5740.76f72bd3.chunk.js.map": "./static/js/5740.76f72bd3.chunk.js.map",
+ "4021.b25d428e.chunk.js.map": "./static/js/4021.b25d428e.chunk.js.map",
"6484.7b5e3559.chunk.js.map": "./static/js/6484.7b5e3559.chunk.js.map",
"7142.2a4bff95.chunk.js.map": "./static/js/7142.2a4bff95.chunk.js.map",
"2691.2b7d55be.chunk.js.map": "./static/js/2691.2b7d55be.chunk.js.map",
"1790.f58a9b74.chunk.js.map": "./static/js/1790.f58a9b74.chunk.js.map",
"2331.977274a2.chunk.js.map": "./static/js/2331.977274a2.chunk.js.map",
"6474.761eaa0f.chunk.js.map": "./static/js/6474.761eaa0f.chunk.js.map",
- "2983.66d9f91c.chunk.js.map": "./static/js/2983.66d9f91c.chunk.js.map",
- "5861.9b443eee.chunk.js.map": "./static/js/5861.9b443eee.chunk.js.map",
- "7873.0f0682a9.chunk.js.map": "./static/js/7873.0f0682a9.chunk.js.map",
- "537.ac3e6c1f.chunk.js.map": "./static/js/537.ac3e6c1f.chunk.js.map",
- "2763.0e8b50c7.chunk.js.map": "./static/js/2763.0e8b50c7.chunk.js.map"
+ "2983.ca089e19.chunk.js.map": "./static/js/2983.ca089e19.chunk.js.map",
+ "5861.37a1f0f2.chunk.js.map": "./static/js/5861.37a1f0f2.chunk.js.map",
+ "7873.7374a5f3.chunk.js.map": "./static/js/7873.7374a5f3.chunk.js.map",
+ "537.561ba81d.chunk.js.map": "./static/js/537.561ba81d.chunk.js.map",
+ "2763.7c4fb5a0.chunk.js.map": "./static/js/2763.7c4fb5a0.chunk.js.map"
},
"entrypoints": [
- "static/css/main.b20a708b.css",
- "static/js/main.e02e3a76.js"
+ "static/css/main.7c092a9d.css",
+ "static/js/main.c7a9c285.js"
]
}
\ No newline at end of file
diff --git a/portal-ui/build/index.html b/portal-ui/build/index.html
index 9437c553f..4f3a17bf0 100644
--- a/portal-ui/build/index.html
+++ b/portal-ui/build/index.html
@@ -1 +1 @@
-
MinIO Console You need to enable JavaScript to run this app.
\ No newline at end of file
+MinIO Console You need to enable JavaScript to run this app.
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1275.e99c33cf.chunk.css b/portal-ui/build/static/css/1275.8bbdd881.chunk.css
similarity index 99%
rename from portal-ui/build/static/css/1275.e99c33cf.chunk.css
rename to portal-ui/build/static/css/1275.8bbdd881.chunk.css
index 1243e9e95..cd3afd6b5 100644
--- a/portal-ui/build/static/css/1275.e99c33cf.chunk.css
+++ b/portal-ui/build/static/css/1275.8bbdd881.chunk.css
@@ -1,2 +1,2 @@
@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=1275.e99c33cf.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=1275.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1507.e99c33cf.chunk.css.map b/portal-ui/build/static/css/1275.8bbdd881.chunk.css.map
similarity index 99%
rename from portal-ui/build/static/css/1507.e99c33cf.chunk.css.map
rename to portal-ui/build/static/css/1275.8bbdd881.chunk.css.map
index bf6a5afc4..ea96b763c 100644
--- a/portal-ui/build/static/css/1507.e99c33cf.chunk.css.map
+++ b/portal-ui/build/static/css/1275.8bbdd881.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/1507.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/1275.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1507.e99c33cf.chunk.css b/portal-ui/build/static/css/1367.8bbdd881.chunk.css
similarity index 99%
rename from portal-ui/build/static/css/1507.e99c33cf.chunk.css
rename to portal-ui/build/static/css/1367.8bbdd881.chunk.css
index fa6aa0928..fde4e354b 100644
--- a/portal-ui/build/static/css/1507.e99c33cf.chunk.css
+++ b/portal-ui/build/static/css/1367.8bbdd881.chunk.css
@@ -1,2 +1,2 @@
@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=1507.e99c33cf.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=1367.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1275.e99c33cf.chunk.css.map b/portal-ui/build/static/css/1367.8bbdd881.chunk.css.map
similarity index 99%
rename from portal-ui/build/static/css/1275.e99c33cf.chunk.css.map
rename to portal-ui/build/static/css/1367.8bbdd881.chunk.css.map
index c700a26c6..984f86c3f 100644
--- a/portal-ui/build/static/css/1275.e99c33cf.chunk.css.map
+++ b/portal-ui/build/static/css/1367.8bbdd881.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/1275.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/1367.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1367.e99c33cf.chunk.css b/portal-ui/build/static/css/1507.8bbdd881.chunk.css
similarity index 99%
rename from portal-ui/build/static/css/1367.e99c33cf.chunk.css
rename to portal-ui/build/static/css/1507.8bbdd881.chunk.css
index 251818d37..5e3befd7c 100644
--- a/portal-ui/build/static/css/1367.e99c33cf.chunk.css
+++ b/portal-ui/build/static/css/1507.8bbdd881.chunk.css
@@ -1,2 +1,2 @@
@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=1367.e99c33cf.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=1507.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/2797.e99c33cf.chunk.css.map b/portal-ui/build/static/css/1507.8bbdd881.chunk.css.map
similarity index 99%
rename from portal-ui/build/static/css/2797.e99c33cf.chunk.css.map
rename to portal-ui/build/static/css/1507.8bbdd881.chunk.css.map
index 66aa3e4ef..168c7d691 100644
--- a/portal-ui/build/static/css/2797.e99c33cf.chunk.css.map
+++ b/portal-ui/build/static/css/1507.8bbdd881.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/2797.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/1507.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/2797.e99c33cf.chunk.css b/portal-ui/build/static/css/2797.8bbdd881.chunk.css
similarity index 99%
rename from portal-ui/build/static/css/2797.e99c33cf.chunk.css
rename to portal-ui/build/static/css/2797.8bbdd881.chunk.css
index 01a8a02ac..ea410b096 100644
--- a/portal-ui/build/static/css/2797.e99c33cf.chunk.css
+++ b/portal-ui/build/static/css/2797.8bbdd881.chunk.css
@@ -1,2 +1,2 @@
@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=2797.e99c33cf.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=2797.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/1367.e99c33cf.chunk.css.map b/portal-ui/build/static/css/2797.8bbdd881.chunk.css.map
similarity index 99%
rename from portal-ui/build/static/css/1367.e99c33cf.chunk.css.map
rename to portal-ui/build/static/css/2797.8bbdd881.chunk.css.map
index 63481ced2..789f41078 100644
--- a/portal-ui/build/static/css/1367.e99c33cf.chunk.css.map
+++ b/portal-ui/build/static/css/2797.8bbdd881.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/1367.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/2797.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/343.e99c33cf.chunk.css b/portal-ui/build/static/css/343.8bbdd881.chunk.css
similarity index 99%
rename from portal-ui/build/static/css/343.e99c33cf.chunk.css
rename to portal-ui/build/static/css/343.8bbdd881.chunk.css
index e695eb30c..1adbd6a3b 100644
--- a/portal-ui/build/static/css/343.e99c33cf.chunk.css
+++ b/portal-ui/build/static/css/343.8bbdd881.chunk.css
@@ -1,2 +1,2 @@
@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=343.e99c33cf.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=343.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/343.e99c33cf.chunk.css.map b/portal-ui/build/static/css/343.8bbdd881.chunk.css.map
similarity index 99%
rename from portal-ui/build/static/css/343.e99c33cf.chunk.css.map
rename to portal-ui/build/static/css/343.8bbdd881.chunk.css.map
index 3c06f7ac5..0963a7fc8 100644
--- a/portal-ui/build/static/css/343.e99c33cf.chunk.css.map
+++ b/portal-ui/build/static/css/343.8bbdd881.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/343.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/343.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3549.8bbdd881.chunk.css b/portal-ui/build/static/css/3549.8bbdd881.chunk.css
new file mode 100644
index 000000000..5ef7da18a
--- /dev/null
+++ b/portal-ui/build/static/css/3549.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=3549.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3549.8bbdd881.chunk.css.map b/portal-ui/build/static/css/3549.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..4c7de8859
--- /dev/null
+++ b/portal-ui/build/static/css/3549.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/3549.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3549.e99c33cf.chunk.css b/portal-ui/build/static/css/3549.e99c33cf.chunk.css
deleted file mode 100644
index d2760d610..000000000
--- a/portal-ui/build/static/css/3549.e99c33cf.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=3549.e99c33cf.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3549.e99c33cf.chunk.css.map b/portal-ui/build/static/css/3549.e99c33cf.chunk.css.map
deleted file mode 100644
index 374c9edab..000000000
--- a/portal-ui/build/static/css/3549.e99c33cf.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/3549.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3905.8bbdd881.chunk.css b/portal-ui/build/static/css/3905.8bbdd881.chunk.css
new file mode 100644
index 000000000..b2dc1ec95
--- /dev/null
+++ b/portal-ui/build/static/css/3905.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=3905.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3905.8bbdd881.chunk.css.map b/portal-ui/build/static/css/3905.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..8e79e0a45
--- /dev/null
+++ b/portal-ui/build/static/css/3905.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/3905.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5503.8bbdd881.chunk.css b/portal-ui/build/static/css/5503.8bbdd881.chunk.css
new file mode 100644
index 000000000..2683575a3
--- /dev/null
+++ b/portal-ui/build/static/css/5503.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=5503.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5503.8bbdd881.chunk.css.map b/portal-ui/build/static/css/5503.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..7d3a239c2
--- /dev/null
+++ b/portal-ui/build/static/css/5503.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/5503.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5503.e99c33cf.chunk.css b/portal-ui/build/static/css/5503.e99c33cf.chunk.css
deleted file mode 100644
index 291fe985b..000000000
--- a/portal-ui/build/static/css/5503.e99c33cf.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=5503.e99c33cf.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5503.e99c33cf.chunk.css.map b/portal-ui/build/static/css/5503.e99c33cf.chunk.css.map
deleted file mode 100644
index 2c8ac4632..000000000
--- a/portal-ui/build/static/css/5503.e99c33cf.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/5503.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5517.8bbdd881.chunk.css b/portal-ui/build/static/css/5517.8bbdd881.chunk.css
new file mode 100644
index 000000000..378ba44f1
--- /dev/null
+++ b/portal-ui/build/static/css/5517.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=5517.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5517.8bbdd881.chunk.css.map b/portal-ui/build/static/css/5517.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..fd682a5d1
--- /dev/null
+++ b/portal-ui/build/static/css/5517.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/5517.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5517.e99c33cf.chunk.css b/portal-ui/build/static/css/5517.e99c33cf.chunk.css
deleted file mode 100644
index d483a0be4..000000000
--- a/portal-ui/build/static/css/5517.e99c33cf.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=5517.e99c33cf.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5517.e99c33cf.chunk.css.map b/portal-ui/build/static/css/5517.e99c33cf.chunk.css.map
deleted file mode 100644
index cc7b0a68b..000000000
--- a/portal-ui/build/static/css/5517.e99c33cf.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/5517.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6995.8bbdd881.chunk.css b/portal-ui/build/static/css/6995.8bbdd881.chunk.css
new file mode 100644
index 000000000..fbf372d94
--- /dev/null
+++ b/portal-ui/build/static/css/6995.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=6995.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6995.8bbdd881.chunk.css.map b/portal-ui/build/static/css/6995.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..8ae3fa8df
--- /dev/null
+++ b/portal-ui/build/static/css/6995.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/6995.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6995.e99c33cf.chunk.css b/portal-ui/build/static/css/6995.e99c33cf.chunk.css
deleted file mode 100644
index 4dbfb7436..000000000
--- a/portal-ui/build/static/css/6995.e99c33cf.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=6995.e99c33cf.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6995.e99c33cf.chunk.css.map b/portal-ui/build/static/css/6995.e99c33cf.chunk.css.map
deleted file mode 100644
index 9d71a5e03..000000000
--- a/portal-ui/build/static/css/6995.e99c33cf.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/6995.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9682.8bbdd881.chunk.css b/portal-ui/build/static/css/9682.8bbdd881.chunk.css
new file mode 100644
index 000000000..b39dab869
--- /dev/null
+++ b/portal-ui/build/static/css/9682.8bbdd881.chunk.css
@@ -0,0 +1,2 @@
+@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
+/*# sourceMappingURL=9682.8bbdd881.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9682.8bbdd881.chunk.css.map b/portal-ui/build/static/css/9682.8bbdd881.chunk.css.map
new file mode 100644
index 000000000..a8e5848ed
--- /dev/null
+++ b/portal-ui/build/static/css/9682.8bbdd881.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/9682.8bbdd881.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9682.e99c33cf.chunk.css b/portal-ui/build/static/css/9682.e99c33cf.chunk.css
deleted file mode 100644
index bbbe846ba..000000000
--- a/portal-ui/build/static/css/9682.e99c33cf.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@media (prefers-color-scheme:dark){.w-tc-editor{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}}@media (prefers-color-scheme:light){.w-tc-editor{--color-fg-default:#24292f;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}}[data-color-mode*=dark] .w-tc-editor,[data-color-mode*=dark] .w-tc-editor-var,body[data-color-mode*=dark]{--color-fg-default:#c9d1d9;--color-canvas-subtle:#161b22;--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-markup-bold:#c9d1d9}[data-color-mode*=light] .w-tc-editor,[data-color-mode*=light] .w-tc-editor-var,body[data-color-mode*=light]{--color-fg-default:#24292f;--color-canvas-subtle:#f6f8fa;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-markup-bold:#24292f}.w-tc-editor{background-color:var(--color-canvas-subtle);color:var(--color-fg-default);font-family:inherit;font-size:12px}.w-tc-editor-preview,.w-tc-editor-text{min-height:16px}.w-tc-editor-preview pre{font-family:inherit;font-size:inherit;margin:0;padding:0;white-space:inherit}.w-tc-editor-preview pre code{font-family:inherit}.w-tc-editor code[class*=language-] .token.cdata,.w-tc-editor code[class*=language-] .token.comment,.w-tc-editor code[class*=language-] .token.doctype,.w-tc-editor code[class*=language-] .token.prolog,.w-tc-editor pre[class*=language-] .token.cdata,.w-tc-editor pre[class*=language-] .token.comment,.w-tc-editor pre[class*=language-] .token.doctype,.w-tc-editor pre[class*=language-] .token.prolog{color:var(--color-prettylights-syntax-comment)}.w-tc-editor code[class*=language-] .token.punctuation,.w-tc-editor pre[class*=language-] .token.punctuation{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.w-tc-editor code[class*=language-] .namespace,.w-tc-editor pre[class*=language-] .namespace{opacity:.7}.w-tc-editor code[class*=language-] .token.boolean,.w-tc-editor code[class*=language-] .token.constant,.w-tc-editor code[class*=language-] .token.deleted,.w-tc-editor code[class*=language-] .token.number,.w-tc-editor code[class*=language-] .token.symbol,.w-tc-editor pre[class*=language-] .token.boolean,.w-tc-editor pre[class*=language-] .token.constant,.w-tc-editor pre[class*=language-] .token.deleted,.w-tc-editor pre[class*=language-] .token.number,.w-tc-editor pre[class*=language-] .token.symbol{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .style .token.string,.w-tc-editor code[class*=language-] .token.builtin,.w-tc-editor code[class*=language-] .token.char,.w-tc-editor code[class*=language-] .token.entity,.w-tc-editor code[class*=language-] .token.inserted,.w-tc-editor code[class*=language-] .token.operator,.w-tc-editor code[class*=language-] .token.property,.w-tc-editor code[class*=language-] .token.selector,.w-tc-editor code[class*=language-] .token.string,.w-tc-editor code[class*=language-] .token.url,.w-tc-editor pre[class*=language-] .style .token.string,.w-tc-editor pre[class*=language-] .token.builtin,.w-tc-editor pre[class*=language-] .token.char,.w-tc-editor pre[class*=language-] .token.entity,.w-tc-editor pre[class*=language-] .token.inserted,.w-tc-editor pre[class*=language-] .token.operator,.w-tc-editor pre[class*=language-] .token.property,.w-tc-editor pre[class*=language-] .token.selector,.w-tc-editor pre[class*=language-] .token.string,.w-tc-editor pre[class*=language-] .token.url{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.atrule,.w-tc-editor code[class*=language-] .token.keyword,.w-tc-editor code[class*=language-] .token.property-access .token.method,.w-tc-editor pre[class*=language-] .token.atrule,.w-tc-editor pre[class*=language-] .token.keyword,.w-tc-editor pre[class*=language-] .token.property-access .token.method{color:var(--color-prettylights-syntax-keyword)}.w-tc-editor code[class*=language-] .token.function,.w-tc-editor pre[class*=language-] .token.function{color:var(--color-prettylights-syntax-string)}.w-tc-editor code[class*=language-] .token.important,.w-tc-editor code[class*=language-] .token.regex,.w-tc-editor code[class*=language-] .token.variable,.w-tc-editor pre[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.regex,.w-tc-editor pre[class*=language-] .token.variable{color:var(--color-prettylights-syntax-string-regexp)}.w-tc-editor code[class*=language-] .token.bold,.w-tc-editor code[class*=language-] .token.important,.w-tc-editor pre[class*=language-] .token.bold,.w-tc-editor pre[class*=language-] .token.important{color:var(--color-prettylights-syntax-markup-bold)}.w-tc-editor code[class*=language-] .token.tag,.w-tc-editor pre[class*=language-] .token.tag{color:var(--color-prettylights-syntax-entity-tag)}.w-tc-editor code[class*=language-] .token.attr-name,.w-tc-editor code[class*=language-] .token.attr-value,.w-tc-editor pre[class*=language-] .token.attr-name,.w-tc-editor pre[class*=language-] .token.attr-value{color:var(--color-prettylights-syntax-constant)}.w-tc-editor code[class*=language-] .token.class-name,.w-tc-editor code[class*=language-] .token.selector .class,.w-tc-editor pre[class*=language-] .token.class-name,.w-tc-editor pre[class*=language-] .token.selector .class{color:var(--color-prettylights-syntax-entity)}
-/*# sourceMappingURL=9682.e99c33cf.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9682.e99c33cf.chunk.css.map b/portal-ui/build/static/css/9682.e99c33cf.chunk.css.map
deleted file mode 100644
index 6771055c4..000000000
--- a/portal-ui/build/static/css/9682.e99c33cf.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/9682.e99c33cf.chunk.css","mappings":"AAAA,mCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,oCACE,aACE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACF,CACA,0GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,6GAGE,0BAA2B,CAC3B,6BAA8B,CAC9B,2CAA4C,CAC5C,8CAA+C,CAC/C,0CAA2C,CAC3C,6DAA8D,CAC9D,4CAA6C,CAC7C,0CAA2C,CAC3C,2CAA4C,CAC5C,+CACF,CACA,aAGE,2CAA4C,CAC5C,6BAA8B,CAH9B,mBAAoB,CACpB,cAGF,CACA,uCAEE,eACF,CACA,yBAIE,mBAAoB,CACpB,iBAAkB,CAJlB,QAAS,CACT,SAAU,CACV,mBAGF,CACA,8BACE,mBACF,CACA,8YAQE,8CACF,CACA,6GAEE,gEACF,CACA,6FAEE,UACF,CACA,ufAUE,iDACF,CAaA,o/BAUE,+CACF,CACA,yVAME,8CACF,CACA,uGAEE,6CACF,CACA,iTAME,oDACF,CACA,wMAIE,kDACF,CACA,6FAEE,iDACF,CACA,oNAIE,+CACF,CACA,gOAIE,6CACF","sources":["../node_modules/@uiw/react-textarea-code-editor/esm/style/index.css"],"sourcesContent":["@media (prefers-color-scheme: dark) {\n .w-tc-editor {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n }\n}\n@media (prefers-color-scheme: light) {\n .w-tc-editor {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n }\n}\n[data-color-mode*='dark'] .w-tc-editor,\n[data-color-mode*='dark'] .w-tc-editor-var,\nbody[data-color-mode*='dark'] {\n --color-fg-default: #c9d1d9;\n --color-canvas-subtle: #161b22;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n}\n[data-color-mode*='light'] .w-tc-editor,\n[data-color-mode*='light'] .w-tc-editor-var,\nbody[data-color-mode*='light'] {\n --color-fg-default: #24292f;\n --color-canvas-subtle: #f6f8fa;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-markup-bold: #24292f;\n}\n.w-tc-editor {\n font-family: inherit;\n font-size: 12px;\n background-color: var(--color-canvas-subtle);\n color: var(--color-fg-default);\n}\n.w-tc-editor-text,\n.w-tc-editor-preview {\n min-height: 16px;\n}\n.w-tc-editor-preview pre {\n margin: 0;\n padding: 0;\n white-space: inherit;\n font-family: inherit;\n font-size: inherit;\n}\n.w-tc-editor-preview pre code {\n font-family: inherit;\n}\n.w-tc-editor code[class*='language-'] .token.cdata,\n.w-tc-editor pre[class*='language-'] .token.cdata,\n.w-tc-editor code[class*='language-'] .token.comment,\n.w-tc-editor pre[class*='language-'] .token.comment,\n.w-tc-editor code[class*='language-'] .token.doctype,\n.w-tc-editor pre[class*='language-'] .token.doctype,\n.w-tc-editor code[class*='language-'] .token.prolog,\n.w-tc-editor pre[class*='language-'] .token.prolog {\n color: var(--color-prettylights-syntax-comment);\n}\n.w-tc-editor code[class*='language-'] .token.punctuation,\n.w-tc-editor pre[class*='language-'] .token.punctuation {\n color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n.w-tc-editor code[class*='language-'] .namespace,\n.w-tc-editor pre[class*='language-'] .namespace {\n opacity: 0.7;\n}\n.w-tc-editor code[class*='language-'] .token.boolean,\n.w-tc-editor pre[class*='language-'] .token.boolean,\n.w-tc-editor code[class*='language-'] .token.constant,\n.w-tc-editor pre[class*='language-'] .token.constant,\n.w-tc-editor code[class*='language-'] .token.deleted,\n.w-tc-editor pre[class*='language-'] .token.deleted,\n.w-tc-editor code[class*='language-'] .token.number,\n.w-tc-editor pre[class*='language-'] .token.number,\n.w-tc-editor code[class*='language-'] .token.symbol,\n.w-tc-editor pre[class*='language-'] .token.symbol {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.builtin,\n.w-tc-editor pre[class*='language-'] .token.builtin,\n.w-tc-editor code[class*='language-'] .token.char,\n.w-tc-editor pre[class*='language-'] .token.char,\n.w-tc-editor code[class*='language-'] .token.inserted,\n.w-tc-editor pre[class*='language-'] .token.inserted,\n.w-tc-editor code[class*='language-'] .token.selector,\n.w-tc-editor pre[class*='language-'] .token.selector,\n.w-tc-editor code[class*='language-'] .token.string,\n.w-tc-editor pre[class*='language-'] .token.string {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .style .token.string,\n.w-tc-editor pre[class*='language-'] .style .token.string,\n.w-tc-editor code[class*='language-'] .token.entity,\n.w-tc-editor pre[class*='language-'] .token.entity,\n.w-tc-editor code[class*='language-'] .token.property,\n.w-tc-editor pre[class*='language-'] .token.property,\n.w-tc-editor code[class*='language-'] .token.operator,\n.w-tc-editor pre[class*='language-'] .token.operator,\n.w-tc-editor code[class*='language-'] .token.url,\n.w-tc-editor pre[class*='language-'] .token.url {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.atrule,\n.w-tc-editor pre[class*='language-'] .token.atrule,\n.w-tc-editor code[class*='language-'] .token.property-access .token.method,\n.w-tc-editor pre[class*='language-'] .token.property-access .token.method,\n.w-tc-editor code[class*='language-'] .token.keyword,\n.w-tc-editor pre[class*='language-'] .token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.w-tc-editor code[class*='language-'] .token.function,\n.w-tc-editor pre[class*='language-'] .token.function {\n color: var(--color-prettylights-syntax-string);\n}\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important,\n.w-tc-editor code[class*='language-'] .token.regex,\n.w-tc-editor pre[class*='language-'] .token.regex,\n.w-tc-editor code[class*='language-'] .token.variable,\n.w-tc-editor pre[class*='language-'] .token.variable {\n color: var(--color-prettylights-syntax-string-regexp);\n}\n.w-tc-editor code[class*='language-'] .token.bold,\n.w-tc-editor pre[class*='language-'] .token.bold,\n.w-tc-editor code[class*='language-'] .token.important,\n.w-tc-editor pre[class*='language-'] .token.important {\n color: var(--color-prettylights-syntax-markup-bold);\n}\n.w-tc-editor code[class*='language-'] .token.tag,\n.w-tc-editor pre[class*='language-'] .token.tag {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.w-tc-editor code[class*='language-'] .token.attr-value,\n.w-tc-editor pre[class*='language-'] .token.attr-value,\n.w-tc-editor code[class*='language-'] .token.attr-name,\n.w-tc-editor pre[class*='language-'] .token.attr-name {\n color: var(--color-prettylights-syntax-constant);\n}\n.w-tc-editor code[class*='language-'] .token.selector .class,\n.w-tc-editor pre[class*='language-'] .token.selector .class,\n.w-tc-editor code[class*='language-'] .token.class-name,\n.w-tc-editor pre[class*='language-'] .token.class-name {\n color: var(--color-prettylights-syntax-entity);\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/main.7c092a9d.css b/portal-ui/build/static/css/main.7c092a9d.css
new file mode 100644
index 000000000..cff62e1ec
--- /dev/null
+++ b/portal-ui/build/static/css/main.7c092a9d.css
@@ -0,0 +1,2 @@
+.ReactVirtualized__Table__headerRow{font-weight:700;text-transform:uppercase}.ReactVirtualized__Table__headerRow,.ReactVirtualized__Table__row{align-items:center;display:flex;flex-direction:row}.ReactVirtualized__Table__headerTruncatedText{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn,.ReactVirtualized__Table__rowColumn{margin-right:10px;min-width:0}.ReactVirtualized__Table__rowColumn{text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn:first-of-type,.ReactVirtualized__Table__rowColumn:first-of-type{margin-left:10px}.ReactVirtualized__Table__sortableHeaderColumn{cursor:pointer}.ReactVirtualized__Table__sortableHeaderIconContainer{align-items:center;display:flex}.ReactVirtualized__Table__sortableHeaderIcon{fill:currentColor;flex:0 0 24px;height:1em;width:1em}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.react-grid-item.resizing{will-change:width,height;z-index:1}.react-grid-item.react-draggable-dragging{transition:none;will-change:transform;z-index:3}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;-webkit-user-select:none;-o-user-select:none;user-select:none;z-index:2}.react-grid-item>.react-resizable-handle{height:20px;position:absolute;width:20px}.react-grid-item>.react-resizable-handle:after{border-bottom:2px solid rgba(0,0,0,.4);border-right:2px solid rgba(0,0,0,.4);bottom:3px;content:"";height:5px;position:absolute;right:3px;width:5px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;-webkit-transform:rotate(225deg);transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZaIiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+);background-origin:content-box;background-position:100% 100%;background-repeat:no-repeat;box-sizing:border-box;height:20px;padding:0 3px 3px 0;position:absolute;width:20px}.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.react-resizable-handle-e{right:0;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-resizable-handle-n{top:0;-webkit-transform:rotate(225deg);transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Lato,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input.removeArrows[type=number]{-moz-appearance:textfield}
+/*# sourceMappingURL=main.7c092a9d.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/main.7c092a9d.css.map b/portal-ui/build/static/css/main.7c092a9d.css.map
new file mode 100644
index 000000000..6d84ecdb8
--- /dev/null
+++ b/portal-ui/build/static/css/main.7c092a9d.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/main.7c092a9d.css","mappings":"AAwBA,oCACE,eAAgB,CAChB,wBAIF,CACA,kEAFE,kBAAmB,CAFnB,YAAa,CACb,kBAOF,CAEA,8CACE,oBAAqB,CACrB,cAAe,CAGf,eAAgB,CADhB,sBAAuB,CADvB,kBAGF,CAEA,2EAEE,iBAAkB,CAClB,WACF,CACA,oCACE,sBAAuB,CACvB,kBACF,CAEA,uGAEE,gBACF,CACA,+CACE,cACF,CAEA,sDAEE,kBAAmB,CADnB,YAEF,CACA,6CAIE,iBAAkB,CAHlB,aAAc,CACd,UAAW,CACX,SAEF,CCxEA,mBACE,iBAAkB,CAClB,0BACF,CACA,iBACE,uBAA0B,CAC1B,4BACF,CACA,qBACE,mBAAoB,CACpB,wBAAiB,CAAjB,gBACF,CACA,+BACE,qCAA8B,CAA9B,6BAA8B,CAA9B,+CACF,CACA,0BAEE,wBAA0B,CAD1B,SAEF,CAEA,0CACE,eAAgB,CAEhB,qBAAsB,CADtB,SAEF,CAEA,0BACE,iBACF,CAEA,wCACE,cAAe,CACf,UAAY,CACZ,uBAA0B,CAE1B,wBAAyB,CAGzB,mBAAoB,CACpB,gBAAiB,CALjB,SAMF,CAEA,yCAGE,WAAY,CAFZ,iBAAkB,CAClB,UAEF,CAEA,+CAQE,sCAA2C,CAD3C,qCAA0C,CAH1C,UAAW,CAHX,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,SAAU,CAEV,SAIF,CAEA,8CACE,YACF,CAEA,mEACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,+BAAwB,CAAxB,uBACF,CACA,mEACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,mEAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,gCAAyB,CAAzB,wBACF,CACA,mEAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,gCAAyB,CAAzB,wBACF,CACA,oIAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,kEACE,MAAO,CACP,gCAAyB,CAAzB,wBACF,CACA,kEACE,OAAQ,CACR,gCAAyB,CAAzB,wBACF,CACA,oIAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,kEACE,KAAM,CACN,gCAAyB,CAAzB,wBACF,CACA,kEACE,QAAS,CACT,+BAAwB,CAAxB,uBACF,CCjHA,iBACE,iBACF,CACA,wBAOE,wPAAuY,CAFvY,6BAA8B,CAG9B,6BAAiC,CAJjC,2BAA4B,CAE5B,qBAAsB,CAHtB,WAAY,CAMZ,mBAAoB,CARpB,iBAAkB,CAClB,UAQF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,MAAO,CAEP,+BAAwB,CAAxB,uBACF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,2BAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,gCAAyB,CAAzB,wBACF,CACA,2BAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,gCAAyB,CAAzB,wBACF,CACA,oDAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,0BACE,MAAO,CACP,gCAAyB,CAAzB,wBACF,CACA,0BACE,OAAQ,CACR,gCAAyB,CAAzB,wBACF,CACA,oDAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,0BACE,KAAM,CACN,gCAAyB,CAAzB,wBACF,CACA,0BACE,QAAS,CACT,+BAAwB,CAAxB,uBACF,CChEA,KAGE,kCAAmC,CACnC,iCAAkC,CAFlC,2BAA+B,CAD/B,QAIF,CAEA,KACE,uEAEF,CAGA,4FAEE,uBAAwB,CACxB,QACF,CAGA,gCACE,yBACF","sources":["../node_modules/react-virtualized/source/styles.css","../node_modules/react-grid-layout/css/styles.css","../node_modules/react-resizable/css/styles.css","index.css"],"sourcesContent":["/* Collection default theme */\n\n.ReactVirtualized__Collection {\n}\n\n.ReactVirtualized__Collection__innerScrollContainer {\n}\n\n/* Grid default theme */\n\n.ReactVirtualized__Grid {\n}\n\n.ReactVirtualized__Grid__innerScrollContainer {\n}\n\n/* Table default theme */\n\n.ReactVirtualized__Table {\n}\n\n.ReactVirtualized__Table__Grid {\n}\n\n.ReactVirtualized__Table__headerRow {\n font-weight: 700;\n text-transform: uppercase;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.ReactVirtualized__Table__row {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.ReactVirtualized__Table__headerTruncatedText {\n display: inline-block;\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ReactVirtualized__Table__headerColumn,\n.ReactVirtualized__Table__rowColumn {\n margin-right: 10px;\n min-width: 0px;\n}\n.ReactVirtualized__Table__rowColumn {\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ReactVirtualized__Table__headerColumn:first-of-type,\n.ReactVirtualized__Table__rowColumn:first-of-type {\n margin-left: 10px;\n}\n.ReactVirtualized__Table__sortableHeaderColumn {\n cursor: pointer;\n}\n\n.ReactVirtualized__Table__sortableHeaderIconContainer {\n display: flex;\n align-items: center;\n}\n.ReactVirtualized__Table__sortableHeaderIcon {\n flex: 0 0 24px;\n height: 1em;\n width: 1em;\n fill: currentColor;\n}\n\n/* List default theme */\n\n.ReactVirtualized__List {\n}\n",".react-grid-layout {\n position: relative;\n transition: height 200ms ease;\n}\n.react-grid-item {\n transition: all 200ms ease;\n transition-property: left, top;\n}\n.react-grid-item img {\n pointer-events: none;\n user-select: none; \n}\n.react-grid-item.cssTransforms {\n transition-property: transform;\n}\n.react-grid-item.resizing {\n z-index: 1;\n will-change: width, height;\n}\n\n.react-grid-item.react-draggable-dragging {\n transition: none;\n z-index: 3;\n will-change: transform;\n}\n\n.react-grid-item.dropping {\n visibility: hidden;\n}\n\n.react-grid-item.react-grid-placeholder {\n background: red;\n opacity: 0.2;\n transition-duration: 100ms;\n z-index: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n}\n\n.react-grid-item > .react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.react-grid-item > .react-resizable-handle::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 5px;\n height: 5px;\n border-right: 2px solid rgba(0, 0, 0, 0.4);\n border-bottom: 2px solid rgba(0, 0, 0, 0.4);\n}\n\n.react-resizable-hide > .react-resizable-handle {\n display: none;\n}\n\n.react-grid-item > .react-resizable-handle.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}\n",".react-resizable {\n position: relative;\n}\n.react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n background-origin: content-box;\n box-sizing: border-box;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');\n background-position: bottom right;\n padding: 0 3px 3px 0;\n}\n.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-resizable-handle-w,\n.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-resizable-handle-n,\n.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}","body {\n margin: 0;\n font-family: \"Lato\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Chrome, Safari, Edge, Opera */\ninput.removeArrows::-webkit-outer-spin-button,\ninput.removeArrows::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"] {\n -moz-appearance: textfield;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/main.b20a708b.css b/portal-ui/build/static/css/main.b20a708b.css
deleted file mode 100644
index 2735f7ef8..000000000
--- a/portal-ui/build/static/css/main.b20a708b.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.min-loader{height:40px;width:40px}#eB8dk2fHKWC2_tr{-webkit-animation:eB8dk2fHKWC2_tr__tr 3s linear infinite normal forwards;animation:eB8dk2fHKWC2_tr__tr 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC2_tr__tr{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(45.236493deg);transform:translate(139.785027px,140.086989px) rotate(45.236493deg)}10%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-197.740907deg);transform:translate(139.785027px,140.086989px) rotate(-197.740907deg)}20%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-108.6deg);transform:translate(139.785027px,140.086989px) rotate(-108.6deg)}30%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-17.484014deg);transform:translate(139.785027px,140.086989px) rotate(-17.484014deg)}33.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-17.48deg);transform:translate(139.785027px,140.086989px) rotate(-17.48deg)}43.333333%{-webkit-transform:translate(139.785027px,140.086989px) rotate(160.887995deg);transform:translate(139.785027px,140.086989px) rotate(160.887995deg)}to{-webkit-transform:translate(139.785027px,140.086989px) rotate(160.887995deg);transform:translate(139.785027px,140.086989px) rotate(160.887995deg)}}@keyframes eB8dk2fHKWC2_tr__tr{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(45.236493deg);transform:translate(139.785027px,140.086989px) rotate(45.236493deg)}10%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-197.740907deg);transform:translate(139.785027px,140.086989px) rotate(-197.740907deg)}20%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-108.6deg);transform:translate(139.785027px,140.086989px) rotate(-108.6deg)}30%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-17.484014deg);transform:translate(139.785027px,140.086989px) rotate(-17.484014deg)}33.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:translate(139.785027px,140.086989px) rotate(-17.48deg);transform:translate(139.785027px,140.086989px) rotate(-17.48deg)}43.333333%{-webkit-transform:translate(139.785027px,140.086989px) rotate(160.887995deg);transform:translate(139.785027px,140.086989px) rotate(160.887995deg)}to{-webkit-transform:translate(139.785027px,140.086989px) rotate(160.887995deg);transform:translate(139.785027px,140.086989px) rotate(160.887995deg)}}#eB8dk2fHKWC2_ts{-webkit-animation:eB8dk2fHKWC2_ts__ts 3s linear infinite normal forwards;animation:eB8dk2fHKWC2_ts__ts 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC2_ts__ts{0%{-webkit-transform:scaleY(.995019);transform:scaleY(.995019)}33.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scaleY(.995019);transform:scaleY(.995019)}43.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scale(.101121,.102033);transform:scale(.101121,.102033)}50%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scale(.1);transform:scale(.1)}60%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes eB8dk2fHKWC2_ts__ts{0%{-webkit-transform:scaleY(.995019);transform:scaleY(.995019)}33.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scaleY(.995019);transform:scaleY(.995019)}43.333333%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scale(.101121,.102033);transform:scale(.101121,.102033)}50%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:scale(.1);transform:scale(.1)}60%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1);transform:scale(1)}}#eB8dk2fHKWC2{-webkit-animation:eB8dk2fHKWC2_c_o 3s linear infinite normal forwards;animation:eB8dk2fHKWC2_c_o 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC2_c_o{0%{opacity:1}6.666667%{opacity:1}10%{opacity:0}13.333333%{opacity:0}20%{opacity:1}30%{opacity:1}36.666667%{opacity:1}40%{opacity:0}to{opacity:0}}@keyframes eB8dk2fHKWC2_c_o{0%{opacity:1}6.666667%{opacity:1}10%{opacity:0}13.333333%{opacity:0}20%{opacity:1}30%{opacity:1}36.666667%{opacity:1}40%{opacity:0}to{opacity:0}}#eB8dk2fHKWC4{-webkit-animation:eB8dk2fHKWC4__m 3s linear infinite normal forwards;animation:eB8dk2fHKWC4__m 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC4__m{0%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}10%{d:path("M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}20%{d:path("M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}30%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}33.333333%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}43.333333%{d:path("M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z")}to{d:path("M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z")}}@keyframes eB8dk2fHKWC4__m{0%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}10%{d:path("M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}20%{d:path("M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}30%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}33.333333%{d:path("M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z")}43.333333%{d:path("M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z")}to{d:path("M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z")}}#eB8dk2fHKWC6{-webkit-animation:eB8dk2fHKWC6__m 3s linear infinite normal forwards;animation:eB8dk2fHKWC6__m 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC6__m{0%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}10%{d:path("M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z")}20%{d:path("M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z")}30%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}33.333333%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}43.333333%{d:path("M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z")}to{d:path("M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z")}}@keyframes eB8dk2fHKWC6__m{0%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}10%{d:path("M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z")}20%{d:path("M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z")}30%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}33.333333%{d:path("M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z")}43.333333%{d:path("M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z")}to{d:path("M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z")}}#eB8dk2fHKWC8{-webkit-animation:eB8dk2fHKWC8__m 3s linear infinite normal forwards;animation:eB8dk2fHKWC8__m 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC8__m{0%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}10%{d:path("M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z")}20%{d:path("M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z")}30%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}33.333333%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}43.333333%{d:path("M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z")}to{d:path("M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z")}}@keyframes eB8dk2fHKWC8__m{0%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}10%{d:path("M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z")}20%{d:path("M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z")}30%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}33.333333%{d:path("M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z")}43.333333%{d:path("M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z")}to{d:path("M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z")}}#eB8dk2fHKWC10{-webkit-animation:eB8dk2fHKWC10__m 3s linear infinite normal forwards;animation:eB8dk2fHKWC10__m 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC10__m{0%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}3.333333%{d:path("M4.90273,88.748028C1.236063,104.534694,0.694614,122.375568,4.181281,138.328902C7.119767,155.82704,18.329955,178.442148,31.722495,188.944182C39.448991,194.869945,48.960631,181.919808,35.808325,167.974185C27.053341,155.46954,26.778713,144.786038,23.180834,130.168643C19.139468,114.899686,18.114526,100.786543,20.952073,87.411869C21.572437,79.045425,6.897064,77.595457,4.916661,86.915441L4.90273,88.748028Z")}10%{d:path("M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z")}20%{d:path("M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z")}30%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}33.333333%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}43.333333%{d:path("M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z")}to{d:path("M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z")}}@keyframes eB8dk2fHKWC10__m{0%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}3.333333%{d:path("M4.90273,88.748028C1.236063,104.534694,0.694614,122.375568,4.181281,138.328902C7.119767,155.82704,18.329955,178.442148,31.722495,188.944182C39.448991,194.869945,48.960631,181.919808,35.808325,167.974185C27.053341,155.46954,26.778713,144.786038,23.180834,130.168643C19.139468,114.899686,18.114526,100.786543,20.952073,87.411869C21.572437,79.045425,6.897064,77.595457,4.916661,86.915441L4.90273,88.748028Z")}10%{d:path("M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z")}20%{d:path("M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z")}30%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}33.333333%{d:path("M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z")}43.333333%{d:path("M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z")}to{d:path("M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z")}}#eB8dk2fHKWC11_ts{-webkit-animation:eB8dk2fHKWC11_ts__ts 3s linear infinite normal forwards;animation:eB8dk2fHKWC11_ts__ts 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC11_ts__ts{0%{-webkit-transform:translate(139.784999px,140.086986px) scale(1);transform:translate(139.784999px,140.086986px) scale(1)}30%{-webkit-transform:translate(139.784999px,140.086986px) scale(1);transform:translate(139.784999px,140.086986px) scale(1)}43.333333%{-webkit-transform:translate(139.784999px,140.086986px) scale(.102813);transform:translate(139.784999px,140.086986px) scale(.102813)}50%{-webkit-transform:translate(139.784999px,140.086986px) scale(.102813);transform:translate(139.784999px,140.086986px) scale(.102813)}60%{-webkit-transform:translate(139.784999px,140.086986px) scale(1.001075);transform:translate(139.784999px,140.086986px) scale(1.001075)}to{-webkit-transform:translate(139.784999px,140.086986px) scale(1.001075);transform:translate(139.784999px,140.086986px) scale(1.001075)}}@keyframes eB8dk2fHKWC11_ts__ts{0%{-webkit-transform:translate(139.784999px,140.086986px) scale(1);transform:translate(139.784999px,140.086986px) scale(1)}30%{-webkit-transform:translate(139.784999px,140.086986px) scale(1);transform:translate(139.784999px,140.086986px) scale(1)}43.333333%{-webkit-transform:translate(139.784999px,140.086986px) scale(.102813);transform:translate(139.784999px,140.086986px) scale(.102813)}50%{-webkit-transform:translate(139.784999px,140.086986px) scale(.102813);transform:translate(139.784999px,140.086986px) scale(.102813)}60%{-webkit-transform:translate(139.784999px,140.086986px) scale(1.001075);transform:translate(139.784999px,140.086986px) scale(1.001075)}to{-webkit-transform:translate(139.784999px,140.086986px) scale(1.001075);transform:translate(139.784999px,140.086986px) scale(1.001075)}}#eB8dk2fHKWC11{-webkit-animation:eB8dk2fHKWC11_c_o 3s linear infinite normal forwards;animation:eB8dk2fHKWC11_c_o 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC11_c_o{0%{opacity:0}30%{opacity:0}36.666667%{opacity:0}40%{opacity:1}to{opacity:1}}@keyframes eB8dk2fHKWC11_c_o{0%{opacity:0}30%{opacity:0}36.666667%{opacity:0}40%{opacity:1}to{opacity:1}}#eB8dk2fHKWC13_tr{-webkit-animation:eB8dk2fHKWC13_tr__tr 3s linear infinite normal forwards;animation:eB8dk2fHKWC13_tr__tr 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC13_tr__tr{0%{-webkit-transform:translate(139.785004px,140.086979px) rotate(0deg);transform:translate(139.785004px,140.086979px) rotate(0deg)}10%{-webkit-transform:translate(139.785004px,140.086979px) rotate(0deg);transform:translate(139.785004px,140.086979px) rotate(0deg)}20%{-webkit-transform:translate(139.785004px,140.086979px) rotate(90.041277deg);transform:translate(139.785004px,140.086979px) rotate(90.041277deg)}to{-webkit-transform:translate(139.785004px,140.086979px) rotate(90.041277deg);transform:translate(139.785004px,140.086979px) rotate(90.041277deg)}}@keyframes eB8dk2fHKWC13_tr__tr{0%{-webkit-transform:translate(139.785004px,140.086979px) rotate(0deg);transform:translate(139.785004px,140.086979px) rotate(0deg)}10%{-webkit-transform:translate(139.785004px,140.086979px) rotate(0deg);transform:translate(139.785004px,140.086979px) rotate(0deg)}20%{-webkit-transform:translate(139.785004px,140.086979px) rotate(90.041277deg);transform:translate(139.785004px,140.086979px) rotate(90.041277deg)}to{-webkit-transform:translate(139.785004px,140.086979px) rotate(90.041277deg);transform:translate(139.785004px,140.086979px) rotate(90.041277deg)}}#eB8dk2fHKWC13{-webkit-animation:eB8dk2fHKWC13_c_o 3s linear infinite normal forwards;animation:eB8dk2fHKWC13_c_o 3s linear infinite normal forwards}@-webkit-keyframes eB8dk2fHKWC13_c_o{0%{opacity:0}6.666667%{opacity:0}10%{opacity:1}13.333333%{opacity:1}20%{opacity:0}to{opacity:0}}@keyframes eB8dk2fHKWC13_c_o{0%{opacity:0}6.666667%{opacity:0}10%{opacity:1}13.333333%{opacity:1}20%{opacity:0}to{opacity:0}}.ReactVirtualized__Table__headerRow{font-weight:700;text-transform:uppercase}.ReactVirtualized__Table__headerRow,.ReactVirtualized__Table__row{align-items:center;display:flex;flex-direction:row}.ReactVirtualized__Table__headerTruncatedText{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn,.ReactVirtualized__Table__rowColumn{margin-right:10px;min-width:0}.ReactVirtualized__Table__rowColumn{text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn:first-of-type,.ReactVirtualized__Table__rowColumn:first-of-type{margin-left:10px}.ReactVirtualized__Table__sortableHeaderColumn{cursor:pointer}.ReactVirtualized__Table__sortableHeaderIconContainer{align-items:center;display:flex}.ReactVirtualized__Table__sortableHeaderIcon{fill:currentColor;flex:0 0 24px;height:1em;width:1em}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.react-grid-item.resizing{will-change:width,height;z-index:1}.react-grid-item.react-draggable-dragging{transition:none;will-change:transform;z-index:3}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;-webkit-user-select:none;-o-user-select:none;user-select:none;z-index:2}.react-grid-item>.react-resizable-handle{height:20px;position:absolute;width:20px}.react-grid-item>.react-resizable-handle:after{border-bottom:2px solid rgba(0,0,0,.4);border-right:2px solid rgba(0,0,0,.4);bottom:3px;content:"";height:5px;position:absolute;right:3px;width:5px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;-webkit-transform:rotate(225deg);transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZaIiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+);background-origin:content-box;background-position:100% 100%;background-repeat:no-repeat;box-sizing:border-box;height:20px;padding:0 3px 3px 0;position:absolute;width:20px}.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.react-resizable-handle-e{right:0;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-resizable-handle-n{top:0;-webkit-transform:rotate(225deg);transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Lato,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input.removeArrows[type=number]{-moz-appearance:textfield}
-/*# sourceMappingURL=main.b20a708b.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/main.b20a708b.css.map b/portal-ui/build/static/css/main.b20a708b.css.map
deleted file mode 100644
index 39850a967..000000000
--- a/portal-ui/build/static/css/main.b20a708b.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/main.b20a708b.css","mappings":"AAAA,YAEE,WAAY,CADZ,UAEF,CAEA,iBACE,wEAAqE,CAArE,gEACF,CAEA,uCACE,GAEE,6CAAyD,CAAzD,qCAAyD,CADzD,2EAAqE,CAArE,mEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,6EAAuE,CAAvE,qEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wEAAkE,CAAlE,gEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,4EAAsE,CAAtE,oEAEF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wEAAkE,CAAlE,gEAEF,CACA,WACE,4EAAsE,CAAtE,oEACF,CACA,GACE,4EAAsE,CAAtE,oEACF,CACF,CA3BA,+BACE,GAEE,6CAAyD,CAAzD,qCAAyD,CADzD,2EAAqE,CAArE,mEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,6EAAuE,CAAvE,qEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wEAAkE,CAAlE,gEAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,4EAAsE,CAAtE,oEAEF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wEAAkE,CAAlE,gEAEF,CACA,WACE,4EAAsE,CAAtE,oEACF,CACA,GACE,4EAAsE,CAAtE,oEACF,CACF,CAEA,iBACE,wEAAqE,CAArE,gEACF,CAEA,uCACE,GACE,iCAA6B,CAA7B,yBACF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,iCAA6B,CAA7B,yBAEF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wCAAoC,CAApC,gCAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,2BAA0B,CAA1B,mBAEF,CACA,IACE,0BAAsB,CAAtB,kBACF,CACA,GACE,0BAAsB,CAAtB,kBACF,CACF,CAtBA,+BACE,GACE,iCAA6B,CAA7B,yBACF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,iCAA6B,CAA7B,yBAEF,CACA,WAEE,6CAAyD,CAAzD,qCAAyD,CADzD,wCAAoC,CAApC,gCAEF,CACA,IAEE,6CAAyD,CAAzD,qCAAyD,CADzD,2BAA0B,CAA1B,mBAEF,CACA,IACE,0BAAsB,CAAtB,kBACF,CACA,GACE,0BAAsB,CAAtB,kBACF,CACF,CAEA,cACE,qEAAkE,CAAlE,6DACF,CAEA,oCACE,GACE,SACF,CACA,UACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CA5BA,4BACE,GACE,SACF,CACA,UACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CAEA,cACE,oEAAiE,CAAjE,4DACF,CAEA,mCACE,GACE,ySAGF,CACA,IACE,uXAGF,CACA,IACE,uXAGF,CACA,IACE,ySAGF,CACA,WACE,ySAGF,CACA,WACE,6XAGF,CACA,GACE,6XAGF,CACF,CApCA,2BACE,GACE,ySAGF,CACA,IACE,uXAGF,CACA,IACE,uXAGF,CACA,IACE,ySAGF,CACA,WACE,ySAGF,CACA,WACE,6XAGF,CACA,GACE,6XAGF,CACF,CAEA,cACE,oEAAiE,CAAjE,4DACF,CAEA,mCACE,GACE,+SAGF,CACA,IACE,2eAGF,CACA,IACE,2eAGF,CACA,IACE,+SAGF,CACA,WACE,+SAGF,CACA,WACE,uaAGF,CACA,GACE,uaAGF,CACF,CApCA,2BACE,GACE,+SAGF,CACA,IACE,2eAGF,CACA,IACE,2eAGF,CACA,IACE,+SAGF,CACA,WACE,+SAGF,CACA,WACE,uaAGF,CACA,GACE,uaAGF,CACF,CAEA,cACE,oEAAiE,CAAjE,4DACF,CAEA,mCACE,GACE,kRAGF,CACA,IACE,ycAGF,CACA,IACE,ycAGF,CACA,IACE,kRAGF,CACA,WACE,kRAGF,CACA,WACE,+aAGF,CACA,GACE,+aAGF,CACF,CApCA,2BACE,GACE,kRAGF,CACA,IACE,ycAGF,CACA,IACE,ycAGF,CACA,IACE,kRAGF,CACA,WACE,kRAGF,CACA,WACE,+aAGF,CACA,GACE,+aAGF,CACF,CAEA,eACE,qEAAkE,CAAlE,6DACF,CAEA,oCACE,GACE,+PAGF,CACA,UACE,6ZAGF,CACA,IACE,gZAGF,CACA,IACE,gZAGF,CACA,IACE,+PAGF,CACA,WACE,+PAGF,CACA,WACE,wYAGF,CACA,GACE,wYAGF,CACF,CAzCA,4BACE,GACE,+PAGF,CACA,UACE,6ZAGF,CACA,IACE,gZAGF,CACA,IACE,gZAGF,CACA,IACE,+PAGF,CACA,WACE,+PAGF,CACA,WACE,wYAGF,CACA,GACE,wYAGF,CACF,CAEA,kBACE,yEAAsE,CAAtE,iEACF,CAEA,wCACE,GACE,+DAA4D,CAA5D,uDACF,CACA,IACE,+DAA4D,CAA5D,uDACF,CACA,WACE,qEAA0E,CAA1E,6DACF,CACA,IACE,qEAA0E,CAA1E,6DACF,CACA,IACE,sEAA0E,CAA1E,8DACF,CACA,GACE,sEAA0E,CAA1E,8DACF,CACF,CAnBA,gCACE,GACE,+DAA4D,CAA5D,uDACF,CACA,IACE,+DAA4D,CAA5D,uDACF,CACA,WACE,qEAA0E,CAA1E,6DACF,CACA,IACE,qEAA0E,CAA1E,6DACF,CACA,IACE,sEAA0E,CAA1E,8DACF,CACA,GACE,sEAA0E,CAA1E,8DACF,CACF,CAEA,eACE,sEAAmE,CAAnE,8DACF,CAEA,qCACE,GACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CAhBA,6BACE,GACE,SACF,CACA,IACE,SACF,CACA,WACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CAEA,kBACE,yEAAsE,CAAtE,iEACF,CAEA,wCACE,GACE,mEAA6D,CAA7D,2DACF,CACA,IACE,mEAA6D,CAA7D,2DACF,CACA,IACE,2EAAqE,CAArE,mEACF,CACA,GACE,2EAAqE,CAArE,mEACF,CACF,CAbA,gCACE,GACE,mEAA6D,CAA7D,2DACF,CACA,IACE,mEAA6D,CAA7D,2DACF,CACA,IACE,2EAAqE,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","sources":["screens/Console/Common/Loader/loader.styles.css","../node_modules/react-virtualized/source/styles.css","../node_modules/react-grid-layout/css/styles.css","../node_modules/react-resizable/css/styles.css","index.css"],"sourcesContent":[".min-loader {\n width: 40px;\n height: 40px;\n}\n\n#eB8dk2fHKWC2_tr {\n animation: eB8dk2fHKWC2_tr__tr 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC2_tr__tr {\n 0% {\n transform: translate(139.785027px, 140.086989px) rotate(45.236493deg);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 10% {\n transform: translate(139.785027px, 140.086989px) rotate(-197.740907deg);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 20% {\n transform: translate(139.785027px, 140.086989px) rotate(-108.6deg);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 30% {\n transform: translate(139.785027px, 140.086989px) rotate(-17.484014deg);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 33.333333% {\n transform: translate(139.785027px, 140.086989px) rotate(-17.48deg);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 43.333333% {\n transform: translate(139.785027px, 140.086989px) rotate(160.887995deg);\n }\n 100% {\n transform: translate(139.785027px, 140.086989px) rotate(160.887995deg);\n }\n}\n\n#eB8dk2fHKWC2_ts {\n animation: eB8dk2fHKWC2_ts__ts 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC2_ts__ts {\n 0% {\n transform: scale(1, 0.995019);\n }\n 33.333333% {\n transform: scale(1, 0.995019);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 43.333333% {\n transform: scale(0.101121, 0.102033);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 50% {\n transform: scale(0.1, 0.1);\n animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1);\n }\n 60% {\n transform: scale(1, 1);\n }\n 100% {\n transform: scale(1, 1);\n }\n}\n\n#eB8dk2fHKWC2 {\n animation: eB8dk2fHKWC2_c_o 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC2_c_o {\n 0% {\n opacity: 1;\n }\n 6.666667% {\n opacity: 1;\n }\n 10% {\n opacity: 0;\n }\n 13.333333% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n 30% {\n opacity: 1;\n }\n 36.666667% {\n opacity: 1;\n }\n 40% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n#eB8dk2fHKWC4 {\n animation: eB8dk2fHKWC4__m 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC4__m {\n 0% {\n d: path(\n \"M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z\"\n );\n }\n 10% {\n d: path(\n \"M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z\"\n );\n }\n 20% {\n d: path(\n \"M85.4,249.8C85.4,249.8,85.399999,249.800001,85.399999,249.800001C85.399999,249.800001,85.4,249.800002,85.4,249.800002C85.4,249.800002,90.484102,251.966034,95.043213,248.269966C100.484052,243.859082,98.694728,236.722769,97.073675,234.469349C95.517658,232.306335,94.559418,231.751273,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z\"\n );\n }\n 30% {\n d: path(\n \"M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z\"\n );\n }\n 33.333333% {\n d: path(\n \"M85.4,249.8C109.08,255.3,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,110.79,235.19,90.73,230.52C78.19,227.61,72.85,246.88,85.4,249.8C85.4,249.8,85.4,249.8,85.4,249.8Z\"\n );\n }\n 43.333333% {\n d: path(\n \"M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z\"\n );\n }\n 100% {\n d: path(\n \"M84.281285,246.076032C107.50521,254.051555,133.72,257.37,157.65,252.14C181.65,246.89,202.95,233.55,219.27,215.35C227.84,205.79,213.74,191.6,205.13,201.21C190.9,217.1,173.27,228.26,152.34,232.86C132.03,237.32,86.465691,239.82846,53.85604,207.193233C41.31604,204.283233,32.439249,213.928672,40.474905,219.54755C40.474905,219.54755,61.310295,238.187372,84.281285,246.076032Z\"\n );\n }\n}\n\n#eB8dk2fHKWC6 {\n animation: eB8dk2fHKWC6__m 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC6__m {\n 0% {\n d: path(\n \"M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z\"\n );\n }\n 10% {\n d: path(\n \"M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z\"\n );\n }\n 20% {\n d: path(\n \"M250.887564,168.08137C250.887564,168.081368,250.887563,168.081375,250.887563,168.081375C250.887563,168.081375,253.7831,157.676613,244.778825,154.781475C235.762034,151.882313,232.694053,158.881918,231.752888,162.486547C231.017121,165.304508,231.564293,168.517464,232.231509,169.666243C233.407087,171.690293,235.517449,173.828597,238.467701,174.606956C241.339242,175.364549,245.542656,175.427978,248.770823,172.704057C248.770823,172.704057,250.400569,171.202441,250.887564,168.08137Z\"\n );\n }\n 30% {\n d: path(\n \"M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z\"\n );\n }\n 33.333333% {\n d: path(\n \"M249.74,169.63C255.24,145.95,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,191.54,41.29,201.15,49.9C217.04,64.13,228.2,81.76,232.8,102.69C237.26,123,235.13,144.24,230.46,164.3C227.54,176.84,246.82,182.18,249.74,169.63C249.74,169.63,249.74,169.63,249.74,169.63Z\"\n );\n }\n 43.333333% {\n d: path(\n \"M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z\"\n );\n }\n 100% {\n d: path(\n \"M241.985702,180.287452C255.201364,145.393106,257.31,121.31,252.08,97.38C246.83,73.38,233.49,52.08,215.29,35.76C205.73,27.19,189.760952,38.146938,199.370952,46.756938C229.706596,66.855753,234.126292,101.544407,234.194759,127.574104C235.798839,155.047874,216.192342,185.901625,205.13,201.21C199.980012,208.336696,214.039151,220.128533,219.270001,215.35C219.270001,215.35,237.299554,192.660656,241.985702,180.287452Z\"\n );\n }\n}\n\n#eB8dk2fHKWC8 {\n animation: eB8dk2fHKWC8__m 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC8__m {\n 0% {\n d: path(\n \"M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z\"\n );\n }\n 10% {\n d: path(\n \"M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z\"\n );\n }\n 20% {\n d: path(\n \"M171.58686,7.8192C164.834536,7.661923,162.882928,13.414575,162.613915,14.669774C162.613914,14.669774,161.858025,17.37084,162.366976,18.743708C162.782522,19.864622,163.527502,21.022768,164.723558,21.957074C165.842173,22.830886,168.859974,24.254302,168.859974,24.254302C168.859974,24.254302,168.859968,24.254306,168.859967,24.254304C181.289967,27.534304,184.046866,11.109212,171.586866,7.819212C171.586866,7.819212,171.58686,7.8192,171.58686,7.8192Z\"\n );\n }\n 30% {\n d: path(\n \"M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z\"\n );\n }\n 33.333333% {\n d: path(\n \"M171.68,7.71C148.17,1.51,123.61,-1.28,99.53,3.25C75.39,7.79,53.7,20.49,36.85,38.21C28.01,47.52,41.68,62.11,50.57,52.76C65.27,37.3,83.22,26.66,104.27,22.68C124.7,18.82,145.87,21.58,165.79,26.83C178.22,30.11,184.14,11,171.68,7.71C171.68,7.71,171.68,7.71,171.68,7.71Z\"\n );\n }\n 43.333333% {\n d: path(\n \"M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z\"\n );\n }\n 100% {\n d: path(\n \"M154.601291,1.547478C127.732134,-3.659063,101.676041,0.16217,89.834975,4.047622C73.018778,9.565582,43.015709,29.967817,36.85,38.21C28.01,47.52,41.568561,62.002759,50.57,52.76C67.005248,35.884138,77.788003,22.937369,100.935291,18.024709C148.028227,8.029949,175.904245,24.591662,199.370952,46.756938C210.775532,51.88401,219.463487,39.878796,215.289997,35.759998C189.664787,10.470596,154.601291,1.547478,154.601291,1.547478Z\"\n );\n }\n}\n\n#eB8dk2fHKWC10 {\n animation: eB8dk2fHKWC10__m 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC10__m {\n 0% {\n d: path(\n \"M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z\"\n );\n }\n 3.333333% {\n d: path(\n \"M4.90273,88.748028C1.236063,104.534694,0.694614,122.375568,4.181281,138.328902C7.119767,155.82704,18.329955,178.442148,31.722495,188.944182C39.448991,194.869945,48.960631,181.919808,35.808325,167.974185C27.053341,155.46954,26.778713,144.786038,23.180834,130.168643C19.139468,114.899686,18.114526,100.786543,20.952073,87.411869C21.572437,79.045425,6.897064,77.595457,4.916661,86.915441L4.90273,88.748028Z\"\n );\n }\n 10% {\n d: path(\n \"M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z\"\n );\n }\n 20% {\n d: path(\n \"M3.04819,95.324083C3.04819,95.324083,5.563842,99.566705,5.563842,99.566705C5.563842,99.566705,11.253926,104.287825,15.031546,103.153927C19.091035,103.791214,24.274539,98.764542,25.851733,95.404259C27.275674,92.370488,25.596139,87.698114,24.002501,85.705929C20.798403,80.519057,13.463578,80.659628,12.636219,80.655608C8.65731,80.636275,3.191193,86.96637,3.089982,89.826322L3.04819,95.324083Z\"\n );\n }\n 30% {\n d: path(\n \"M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z\"\n );\n }\n 33.333333% {\n d: path(\n \"M5.83,85.46C0.33,109.14,-1.74,133.78,3.49,157.71C8.74,181.71,22.08,203.01,40.28,219.33C49.84,227.9,64.03,213.8,54.42,205.19C38.53,190.96,27.37,173.33,22.77,152.4C18.31,132.09,20.44,110.85,25.11,90.79C28.03,78.25,8.75,72.91,5.83,85.46L5.83,85.46Z\"\n );\n }\n 43.333333% {\n d: path(\n \"M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z\"\n );\n }\n 100% {\n d: path(\n \"M36.436007,38.11681C-7.498754,85.801617,-0.826469,134.911183,5.658972,158.164678C15.873566,192.855226,35.43893,215.965329,40.28,219.33C49.84,227.9,63.271136,215.585685,53.661136,206.975685C38.384036,191.128398,25.999041,166.121323,22.77,152.4C12.429986,121.009925,27.020185,73.061168,50.245766,52.61587C65.058304,39.576508,51.054205,23.186387,36.436019,38.116819L36.436007,38.11681Z\"\n );\n }\n}\n\n#eB8dk2fHKWC11_ts {\n animation: eB8dk2fHKWC11_ts__ts 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC11_ts__ts {\n 0% {\n transform: translate(139.784999px, 140.086986px) scale(1, 1);\n }\n 30% {\n transform: translate(139.784999px, 140.086986px) scale(1, 1);\n }\n 43.333333% {\n transform: translate(139.784999px, 140.086986px) scale(0.102813, 0.102813);\n }\n 50% {\n transform: translate(139.784999px, 140.086986px) scale(0.102813, 0.102813);\n }\n 60% {\n transform: translate(139.784999px, 140.086986px) scale(1.001075, 1.001075);\n }\n 100% {\n transform: translate(139.784999px, 140.086986px) scale(1.001075, 1.001075);\n }\n}\n\n#eB8dk2fHKWC11 {\n animation: eB8dk2fHKWC11_c_o 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC11_c_o {\n 0% {\n opacity: 0;\n }\n 30% {\n opacity: 0;\n }\n 36.666667% {\n opacity: 0;\n }\n 40% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n\n#eB8dk2fHKWC13_tr {\n animation: eB8dk2fHKWC13_tr__tr 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC13_tr__tr {\n 0% {\n transform: translate(139.785004px, 140.086979px) rotate(0deg);\n }\n 10% {\n transform: translate(139.785004px, 140.086979px) rotate(0deg);\n }\n 20% {\n transform: translate(139.785004px, 140.086979px) rotate(90.041277deg);\n }\n 100% {\n transform: translate(139.785004px, 140.086979px) rotate(90.041277deg);\n }\n}\n\n#eB8dk2fHKWC13 {\n animation: eB8dk2fHKWC13_c_o 3000ms linear infinite normal forwards;\n}\n\n@keyframes eB8dk2fHKWC13_c_o {\n 0% {\n opacity: 0;\n }\n 6.666667% {\n opacity: 0;\n }\n 10% {\n opacity: 1;\n }\n 13.333333% {\n opacity: 1;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n","/* Collection default theme */\n\n.ReactVirtualized__Collection {\n}\n\n.ReactVirtualized__Collection__innerScrollContainer {\n}\n\n/* Grid default theme */\n\n.ReactVirtualized__Grid {\n}\n\n.ReactVirtualized__Grid__innerScrollContainer {\n}\n\n/* Table default theme */\n\n.ReactVirtualized__Table {\n}\n\n.ReactVirtualized__Table__Grid {\n}\n\n.ReactVirtualized__Table__headerRow {\n font-weight: 700;\n text-transform: uppercase;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.ReactVirtualized__Table__row {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.ReactVirtualized__Table__headerTruncatedText {\n display: inline-block;\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ReactVirtualized__Table__headerColumn,\n.ReactVirtualized__Table__rowColumn {\n margin-right: 10px;\n min-width: 0px;\n}\n.ReactVirtualized__Table__rowColumn {\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ReactVirtualized__Table__headerColumn:first-of-type,\n.ReactVirtualized__Table__rowColumn:first-of-type {\n margin-left: 10px;\n}\n.ReactVirtualized__Table__sortableHeaderColumn {\n cursor: pointer;\n}\n\n.ReactVirtualized__Table__sortableHeaderIconContainer {\n display: flex;\n align-items: center;\n}\n.ReactVirtualized__Table__sortableHeaderIcon {\n flex: 0 0 24px;\n height: 1em;\n width: 1em;\n fill: currentColor;\n}\n\n/* List default theme */\n\n.ReactVirtualized__List {\n}\n",".react-grid-layout {\n position: relative;\n transition: height 200ms ease;\n}\n.react-grid-item {\n transition: all 200ms ease;\n transition-property: left, top;\n}\n.react-grid-item img {\n pointer-events: none;\n user-select: none; \n}\n.react-grid-item.cssTransforms {\n transition-property: transform;\n}\n.react-grid-item.resizing {\n z-index: 1;\n will-change: width, height;\n}\n\n.react-grid-item.react-draggable-dragging {\n transition: none;\n z-index: 3;\n will-change: transform;\n}\n\n.react-grid-item.dropping {\n visibility: hidden;\n}\n\n.react-grid-item.react-grid-placeholder {\n background: red;\n opacity: 0.2;\n transition-duration: 100ms;\n z-index: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n}\n\n.react-grid-item > .react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.react-grid-item > .react-resizable-handle::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 5px;\n height: 5px;\n border-right: 2px solid rgba(0, 0, 0, 0.4);\n border-bottom: 2px solid rgba(0, 0, 0, 0.4);\n}\n\n.react-resizable-hide > .react-resizable-handle {\n display: none;\n}\n\n.react-grid-item > .react-resizable-handle.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n,\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-grid-item > .react-resizable-handle.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}\n",".react-resizable {\n position: relative;\n}\n.react-resizable-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n background-origin: content-box;\n box-sizing: border-box;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');\n background-position: bottom right;\n padding: 0 3px 3px 0;\n}\n.react-resizable-handle-sw {\n bottom: 0;\n left: 0;\n cursor: sw-resize;\n transform: rotate(90deg);\n}\n.react-resizable-handle-se {\n bottom: 0;\n right: 0;\n cursor: se-resize;\n}\n.react-resizable-handle-nw {\n top: 0;\n left: 0;\n cursor: nw-resize;\n transform: rotate(180deg);\n}\n.react-resizable-handle-ne {\n top: 0;\n right: 0;\n cursor: ne-resize;\n transform: rotate(270deg);\n}\n.react-resizable-handle-w,\n.react-resizable-handle-e {\n top: 50%;\n margin-top: -10px;\n cursor: ew-resize;\n}\n.react-resizable-handle-w {\n left: 0;\n transform: rotate(135deg);\n}\n.react-resizable-handle-e {\n right: 0;\n transform: rotate(315deg);\n}\n.react-resizable-handle-n,\n.react-resizable-handle-s {\n left: 50%;\n margin-left: -10px;\n cursor: ns-resize;\n}\n.react-resizable-handle-n {\n top: 0;\n transform: rotate(225deg);\n}\n.react-resizable-handle-s {\n bottom: 0;\n transform: rotate(45deg);\n}","body {\n margin: 0;\n font-family: \"Lato\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Chrome, Safari, Edge, Opera */\ninput.removeArrows::-webkit-outer-spin-button,\ninput.removeArrows::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"] {\n -moz-appearance: textfield;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1030.0c362d0c.chunk.js b/portal-ui/build/static/js/1030.0c362d0c.chunk.js
deleted file mode 100644
index d8de7ba05..000000000
--- a/portal-ui/build/static/js/1030.0c362d0c.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1030],{81806:function(e,n,t){var i=t(1413),a=t(45987),o=(t(72791),t(11135)),l=t(25787),r=t(80184),s=["classes","children"];n.Z=(0,l.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Lato, sans-serif"}})}))((function(e){var n=e.classes,t=e.children,o=(0,a.Z)(e,s);return(0,r.jsx)("button",(0,i.Z)((0,i.Z)({},o),{},{className:n.root,children:t}))}))},56028:function(e,n,t){var i=t(29439),a=t(1413),o=t(72791),l=t(78687),r=t(13400),s=t(55646),c=t(5574),d=t(65661),u=t(39157),m=t(11135),v=t(25787),p=t(23814),h=t(25469),f=t(29823),g=t(28057),x=t(87995),Z=t(80184);n.Z=(0,v.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)({},p.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},p.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,v=e.children,p=e.classes,j=e.wideLimit,b=void 0===j||j,y=e.noContentPadding,S=e.titleIcon,w=void 0===S?null:S,k=(0,h.TL)(),P=(0,o.useState)(!1),C=(0,i.Z)(P,2),R=C[0],N=C[1],I=(0,l.v9)((function(e){return e.system.modalSnackBar}));(0,o.useEffect)((function(){k((0,x.MK)(""))}),[k]),(0,o.useEffect)((function(){if(I){if(""===I.message)return void N(!1);"error"!==I.type&&N(!0)}}),[I]);var D=b?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return I&&(E=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(E=I.message)),(0,Z.jsxs)(c.Z,(0,a.Z)((0,a.Z)({open:t,classes:p},D),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,Z.jsxs)(d.Z,{className:p.title,children:[(0,Z.jsxs)("div",{className:p.titleText,children:[w," ",m]}),(0,Z.jsx)("div",{className:p.closeContainer,children:(0,Z.jsx)(r.Z,{"aria-label":"close",id:"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,Z.jsx)(f.Z,{})})})]}),(0,Z.jsx)(g.Z,{isModal:!0}),(0,Z.jsx)(s.Z,{open:R,className:p.snackBarModal,onClose:function(){N(!1),k((0,x.MK)(""))},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(I&&"error"===I.type?p.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,Z.jsx)(u.Z,{className:y?"":p.content,children:v})]}))}))},45902:function(e,n,t){var i=t(1413),a=(t(72791),t(53767)),o=t(80184);n.Z=function(e){var n=e.label,t=void 0===n?null:n,l=e.value,r=void 0===l?"-":l,s=e.orientation,c=void 0===s?"column":s,d=e.stkProps,u=void 0===d?{}:d,m=e.lblProps,v=void 0===m?{}:m,p=e.valProps,h=void 0===p?{}:p;return(0,o.jsxs)(a.Z,(0,i.Z)((0,i.Z)({direction:{xs:"column",sm:c}},u),{},{children:[(0,o.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:600}},v),{},{children:t})),(0,o.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:500}},h),{},{children:r}))]}))}},74815:function(e,n,t){t.d(n,{Z:function(){return u}});var i=t(93433),a=(t(72791),t(73909)),o=t(21041),l=t(41048),r=t(45248),s=t(56096),c=t(80184),d=function(e){var n=e.totalValue,t=e.sizeItems,i=e.bgColor,a=void 0===i?"#ededed":i;return(0,c.jsx)("div",{style:{width:"100%",height:12,backgroundColor:a,borderRadius:30,display:"flex",transitionDuration:"0.3s",overflow:"hidden"},children:t.map((function(e,t){var i=100*e.value/n;return(0,c.jsx)("div",{style:{width:"".concat(i,"%"),height:"100%",backgroundColor:e.color,transitionDuration:"0.3s"}},"itemSize-".concat(t.toString()))}))})},u=function(e){var n=e.totalCapacity,t=e.usedSpaceVariants,u=e.statusClass,m=e.render,v=void 0===m?"pie":m,p=["#8dacd3","#bca1ea","#92e8d2","#efc9ac","#97f274","#f7d291","#71ACCB","#f28282","#e28cc1","#2781B0"],h="#ededed",f=t.reduce((function(e,n){return e+n.value}),0),g=n-f,x=[],Z=t.find((function(e){return"STANDARD"===e.variant}))||{value:0,variant:"empty"};t.length>10?x=[{value:f-Z.value,color:"#2781B0",label:"Total Tiers Space"}]:x=t.filter((function(e){return"STANDARD"!==e.variant})).map((function(e,n){return{value:e.value,color:p[n],label:"Tier - ".concat(e.variant)}}));var j="#07193E",b=100*Z.value/n;b>=90?j="#C83B51":b>=75&&(j="#FFAB0F");var y=[{value:Z.value,color:j,label:"Used Space by Tenant"}].concat((0,i.Z)(x),[{value:g,color:"bar"===v?h:"transparent",label:"Empty Space"}]);if("bar"===v){var S=y.map((function(e){return{value:e.value,color:e.color,itemName:e.label}}));return(0,c.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,c.jsx)(d,{totalValue:n,sizeItems:S,bgColor:h})})}return(0,c.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,c.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:u,children:(0,c.jsx)(s.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,c.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:isNaN(f)?"N/A":(0,r.l5)(f)}),(0,c.jsx)("div",{children:(0,c.jsxs)(a.u,{width:110,height:110,children:[(0,c.jsx)(o.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:h,isAnimationActive:!1,stroke:"none"}),(0,c.jsx)(o.b,{data:y,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:y.map((function(e,n){return(0,c.jsx)(l.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(n))}))})]})})]})}},21353:function(e,n,t){t.r(n),t.d(n,{default:function(){return K}});var i=t(29439),a=t(1413),o=t(72791),l=t(78687),r=t(26181),s=t.n(r),c=t(11135),d=t(25787),u=t(23814),m=t(61889),v=t(64554),p=t(75952),h=t(56028),f=t(21435),g=t(37516),x=t(81207),Z=t(87995),j=t(25469),b=t(80184),y=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({infoText:{fontSize:14}},u.DF),u.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,l=e.namespace,r=e.idTenant,s=e.classes,c=(0,j.TL)(),d=(0,o.useState)(!1),u=(0,i.Z)(d,2),v=u[0],y=u[1],S=(0,o.useState)(""),w=(0,i.Z)(S,2),k=w[0],P=w[1],C=(0,o.useState)(!1),R=(0,i.Z)(C,2),N=R[0],I=R[1],D=(0,o.useState)(""),E=(0,i.Z)(D,2),A=E[0],F=E[1],_=(0,o.useState)(""),B=(0,i.Z)(_,2),M=B[0],z=B[1],T=(0,o.useState)(""),U=(0,i.Z)(T,2),W=U[0],O=U[1],L=(0,o.useState)(!0),$=(0,i.Z)(L,2),V=$[0],K=$[1],G=(0,o.useCallback)((function(e){var n=new RegExp("^$|^((.*?)/(.*?):(.+))$");if("minioImage"===e)K(n.test(k))}),[k]);(0,o.useEffect)((function(){G("minioImage")}),[k,G]);return(0,b.jsx)(h.Z,{title:"Update MinIO Version",modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalFormScrollable,children:[(0,b.jsx)("div",{className:s.infoText,children:"Please enter the MinIO image from dockerhub to use. If blank, then latest build will be used."}),(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:k,label:"MinIO's Image",id:"minioImage",name:"minioImage",placeholder:"E.g. minio/minio:RELEASE.2022-02-26T02-54-46Z",onChange:function(e){P(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(g.Z,{value:"imageRegistry",id:"setImageRegistry",name:"setImageRegistry",checked:N,onChange:function(e){I(!N)},label:"Set Custom Image Registry",indicatorLabels:["Yes","No"]})}),N&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:A,label:"Endpoint",id:"imageRegistry",name:"imageRegistry",placeholder:"E.g. https://index.docker.io/v1/",onChange:function(e){F(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:M,label:"Username",id:"imageRegistryUsername",name:"imageRegistryUsername",placeholder:"Enter image registry username",onChange:function(e){z(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:W,label:"Password",id:"imageRegistryPassword",name:"imageRegistryPassword",placeholder:"Enter image registry password",onChange:function(e){O(e.target.value)}})})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalButtonBar,children:[(0,b.jsx)(p.zx,{id:"clear",variant:"regular",onClick:function(){P(""),I(!1),F(""),z(""),O("")},label:"Clear"}),(0,b.jsx)(p.zx,{id:"save-tenant",type:"submit",variant:"callAction",disabled:!V||N&&(""===A.trim()||""===M.trim()||""===W.trim())||v,onClick:function(){y(!0);var e={image:k,enable_prometheus:!0};if(N){var n={image_registry:{registry:A,username:M,password:W}};e=(0,a.Z)((0,a.Z)({},e),n)}x.Z.invoke("PUT","/api/v1/namespaces/".concat(l,"/tenants/").concat(r),e).then((function(){y(!1),c((0,Z.y1)("Image updated successfully")),t(!0)})).catch((function(e){c((0,Z.zb)(e)),y(!1)}))},label:"Save"})]})]})})})),S=t(81806),w=t(40986),k=t(53767),P=t(56096),C=t(45248),R=t(72401),N=t(74815),I=t(22512),D=t(45902),E=((0,d.Z)((function(e){return{root:{height:10,borderRadius:5},colorPrimary:{backgroundColor:"#F4F4F4"},bar:{borderRadius:5,backgroundColor:"#081C42"},padChart:{padding:"5px"}}}))(w.Z),(0,d.Z)((function(e){return(0,c.Z)({centerItem:{textAlign:"center"}})}))((function(e){var n,t,i,a,l,r,s=e.classes,c=e.tenant,d=e.healthStatus,u=e.loading,v=e.error,p={value:"n/a",unit:""},h={value:"n/a",unit:""},f={value:"n/a",unit:""},g={value:"n/a",unit:""},x={value:"n/a",unit:""};if(null!==(n=c.status)&&void 0!==n&&null!==(t=n.usage)&&void 0!==t&&t.raw){var Z=(0,C.ae)("".concat(c.status.usage.raw),!0).split(" ");p.value=Z[0],p.unit=Z[1]}if(null!==(i=c.status)&&void 0!==i&&null!==(a=i.usage)&&void 0!==a&&a.capacity){var j=(0,C.ae)("".concat(c.status.usage.capacity),!0).split(" ");h.value=j[0],h.unit=j[1]}if(null!==(l=c.status)&&void 0!==l&&null!==(r=l.usage)&&void 0!==r&&r.capacity_usage){var y=(0,C.l5)(c.status.usage.capacity_usage,!0).split(" ");f.value=y[0],f.unit=y[1]}var S=[];if(c.tiers&&0!==c.tiers.length){S=c.tiers.map((function(e){return{value:e.size,variant:e.name}}));var w=c.tiers.filter((function(e){return"internal"===e.type})).reduce((function(e,n){return e+n.size}),0),E=c.tiers.filter((function(e){return"internal"!==e.type})).reduce((function(e,n){return e+n.size}),0),A=(0,C.l5)(E,!0).split(" ");x.value=A[0],x.unit=A[1];var F=(0,C.l5)(w,!0).split(" ");g.value=F[0],g.unit=F[1]}else{var _,B;S=[{value:(null===(_=c.status)||void 0===_||null===(B=_.usage)||void 0===B?void 0:B.capacity_usage)||0,variant:"STANDARD"}]}return(0,b.jsxs)(o.Fragment,{children:[u&&(0,b.jsx)("div",{className:s.padChart,children:(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.centerItem,children:(0,b.jsx)(R.Z,{style:{width:40,height:40}})})}),function(){var e,n;return u?null:""!==v?(0,b.jsx)(I.Z,{errorMessage:v,withBreak:!1}):(0,b.jsxs)(m.ZP,{item:!0,xs:12,children:[(0,b.jsx)(N.Z,{totalCapacity:(null===(e=c.status)||void 0===e||null===(n=e.usage)||void 0===n?void 0:n.raw)||0,usedSpaceVariants:S,statusClass:"",render:"bar"}),(0,b.jsxs)(k.Z,{direction:{xs:"column",sm:"row"},spacing:{xs:1,sm:2,md:4},alignItems:"stretch",margin:"0 0 15px 0",children:[(!c.tiers||0===c.tiers.length)&&(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(D.Z,{label:"Internal:",orientation:"row",value:"".concat(f.value," ").concat(f.unit)})}),c.tiers&&c.tiers.length>0&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)(D.Z,{label:"Internal:",orientation:"row",value:"".concat(g.value," ").concat(g.unit)}),(0,b.jsx)(D.Z,{label:"Tiered:",orientation:"row",value:"".concat(x.value," ").concat(x.unit)})]}),d&&(0,b.jsx)(D.Z,{orientation:"row",label:"Health:",value:(0,b.jsx)("span",{className:d,children:(0,b.jsx)(P.J$M,{})})})]})]})}()]})}))),A=t(50896),F=t(93433),_=t(13400),B=t(42419),M=t(51979),z=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({domainInline:{display:"flex",marginBottom:15},overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{width:15,height:15},"& button":{background:"#EAEAEA"}}},u.DF),u.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,a=e.namespace,l=e.idTenant,r=e.domains,s=e.classes,c=(0,j.TL)(),d=(0,o.useState)(!1),u=(0,i.Z)(d,2),v=u[0],g=u[1],y=(0,o.useState)(""),S=(0,i.Z)(y,2),w=S[0],k=S[1],P=(0,o.useState)([""]),C=(0,i.Z)(P,2),R=C[0],N=C[1],I=(0,o.useState)(!0),D=(0,i.Z)(I,2),E=D[0],A=D[1],z=(0,o.useState)([!0]),T=(0,i.Z)(z,2),U=T[0],W=T[1];(0,o.useEffect)((function(){if(r){var e=r.console||"";if(k(e),""!==e){var n=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/);A(n.test(e))}else A(!0);if(r.minio&&r.minio.length>0){N(r.minio);var t=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/),i=r.minio.map((function(e){return""===e.trim()||t.test(e)}));W(i)}}}),[r]);var O=function(){var e=(0,F.Z)(R),n=(0,F.Z)(U);e.push(""),n.push(!0),N(e),W(n)};return(0,b.jsx)(h.Z,{title:"Edit Tenant Domains - ".concat(l),modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsx)(m.ZP,{container:!0,children:(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalFormScrollable,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:"".concat(s.configSectionItem),children:[(0,b.jsx)("div",{className:s.containerItem,children:(0,b.jsx)(f.Z,{id:"console_domain",name:"console_domain",onChange:function(e){k(e.target.value),A(e.target.validity.valid)},label:"Console Domain",value:w,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",error:E?"":"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{children:"MinIO Domains"}),(0,b.jsx)("div",{children:R.map((function(e,n){return(0,b.jsxs)("div",{className:"".concat(s.domainInline),children:[(0,b.jsx)(f.Z,{id:"minio-domain-".concat(n.toString()),name:"minio-domain-".concat(n.toString()),onChange:function(e){!function(e,n){var t=(0,F.Z)(R);t[n]=e,N(t)}(e.target.value,n),function(e,n){var t=(0,F.Z)(U);t[n]=e,W(t)}(e.target.validity.valid,n)},label:"MinIO Domain ".concat(n+1),value:e,placeholder:"Eg. http://subdomain.domain",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$",error:U[n]?"":"MinIO domain format is incorrect (http|https://subdomain.domain)"}),(0,b.jsx)("div",{className:s.overlayAction,children:(0,b.jsx)(_.Z,{size:"small",onClick:O,disabled:n!==R.length-1,children:(0,b.jsx)(B.Z,{})})}),(0,b.jsx)("div",{className:s.overlayAction,children:(0,b.jsx)(_.Z,{size:"small",onClick:function(){return function(e){var n=R.filter((function(n,t){return t!==e})),t=U.filter((function(n,t){return t!==e}));N(n),W(t)}(n)},disabled:R.length<=1,children:(0,b.jsx)(M.Z,{})})})]},"minio-domain-key-".concat(n.toString()))}))})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalButtonBar,children:[(0,b.jsx)(p.zx,{id:"clear-edit-domain",type:"button",variant:"regular",onClick:function(){k(""),A(!0),N([""]),W([!0])},label:"Clear"}),(0,b.jsx)(p.zx,{id:"save-domain",type:"submit",variant:"callAction",disabled:v||!E||U.filter((function(e){return!e})).length>0,onClick:function(){g(!0);var e={domains:{console:w,minio:R.filter((function(e){return""!==e.trim()}))}};x.Z.invoke("PUT","/api/v1/namespaces/".concat(a,"/tenants/").concat(l,"/domains"),e).then((function(){g(!1),c((0,Z.y1)("Domains updated successfully")),t(!0)})).catch((function(e){g(!1),c((0,Z.zb)(e))}))},label:"Save"})]})]})})})})),T=t(57689),U=t(82295),W=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"red",n=arguments.length>1?arguments[1]:void 0;return"red"===e?n.redState:"yellow"===e?n.yellowState:"green"===e?n.greenState:n.greyState},O=function(e){var n,t=e.tenant,i=e.classes;return t?(0,b.jsx)(E,{tenant:t,label:"Storage",error:"",loading:!1,healthStatus:W(null===t||void 0===t||null===(n=t.status)||void 0===n?void 0:n.health_status,i)}):null},L=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(0,b.jsx)(g.Z,{indicatorLabels:["Enabled","Disabled"],checked:e,value:e,id:"".concat(n,"-status"),name:"".concat(n,"-status"),onChange:function(){},switchOnly:!0})},$={display:"flex",justifyContent:"space-between",marginTop:"10px","@media (max-width: 600px)":{flexFlow:"column"}},V={stkProps:{sx:{flex:1,marginRight:10,display:"flex",alignItems:"center",justifyContent:"space-between","@media (max-width: 900px)":{marginRight:"25px"}}},lblProps:{style:{minWidth:100}}},K=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({},u.oZ),{},{redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,marginRight:4}},detailSection:{"& div":{"& b,i":{minWidth:80,display:"block",float:"left"},"& i":{fontStyle:"normal",wordWrap:"break-word",overflowWrap:"break-word"},"& div":{clear:"both"},clear:"both",marginBottom:2}},linkedSection:{color:e.palette.info.main,fontFamily:"'Lato', sans-serif"},autoGeneratedLink:{fontStyle:"italic"}},(0,u.Bz)(e.spacing(4))))}))((function(e){var n,t,r,c,d,u,h,f,g,x,Z,w,k,C,R,N,I,E,F,_,B,M,W,K,G=e.classes,H=(0,j.TL)(),q=(0,T.UO)(),J=q.tenantName,Q=q.tenantNamespace,Y=(0,l.v9)((function(e){return e.tenants.tenantInfo})),X=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"logEnabled",!1)})),ee=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"monitoringEnabled",!1)})),ne=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"encryptionEnabled",!1)})),te=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"minioTLS",!1)})),ie=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"idpAdEnabled",!1)})),ae=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"idpOidcEnabled",!1)})),oe=(0,o.useState)(0),le=(0,i.Z)(oe,2),re=le[0],se=le[1],ce=(0,o.useState)(0),de=(0,i.Z)(ce,2),ue=de[0],me=de[1],ve=(0,o.useState)(0),pe=(0,i.Z)(ve,2),he=pe[0],fe=pe[1],ge=(0,o.useState)(!1),xe=(0,i.Z)(ge,2),Ze=xe[0],je=xe[1],be=(0,o.useState)(!1),ye=(0,i.Z)(be,2),Se=ye[0],we=ye[1];(0,o.useEffect)((function(){Y&&(se(Y.pools.length),fe(Y.total_volumes||0),me(Y.total_instances||0))}),[Y]);return(0,b.jsxs)(o.Fragment,{children:[Ze&&(0,b.jsx)(y,{open:Ze,closeModalAndRefresh:function(e){je(!1),e&&H((0,U.v)())},idTenant:J||"",namespace:Q||""}),Se&&(0,b.jsx)(z,{open:Se,idTenant:J||"",namespace:Q||"",domains:(null===Y||void 0===Y?void 0:Y.domains)||null,closeModalAndRefresh:function(e){we(!1),e&&H((0,U.v)())}}),(0,b.jsx)(A.Z,{separator:!1,children:"Details"}),(0,b.jsx)(O,{tenant:Y,classes:G}),(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:8,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"State:",value:null===Y||void 0===Y?void 0:Y.currentState})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"MinIO:",value:(0,b.jsx)(S.Z,{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all"},onClick:function(){je(!0)},children:Y?Y.image:""})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsxs)("h3",{children:["Domains",(0,b.jsx)(p.zx,{id:"edit-domains",icon:(0,b.jsx)(P.dY8,{}),onClick:function(){we(!0)}})]})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Console:",value:(0,b.jsxs)(o.Fragment,{children:[null!==Y&&void 0!==Y&&null!==(n=Y.domains)&&void 0!==n&&n.console&&""!==(null===Y||void 0===Y||null===(t=Y.domains)||void 0===t?void 0:t.console)||null!==Y&&void 0!==Y&&null!==(r=Y.endpoints)&&void 0!==r&&r.console?"":"-",(null===Y||void 0===Y||null===(c=Y.endpoints)||void 0===c?void 0:c.console)&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:null===Y||void 0===Y||null===(d=Y.endpoints)||void 0===d?void 0:d.console,target:"_blank",rel:"noopener noreferrer",className:"".concat(G.linkedSection," ").concat(G.autoGeneratedLink),children:(null===Y||void 0===Y||null===(u=Y.endpoints)||void 0===u?void 0:u.console)||"-"}),(0,b.jsx)("br",{})]}),(null===Y||void 0===Y||null===(h=Y.domains)||void 0===h?void 0:h.console)&&""!==(null===Y||void 0===Y||null===(f=Y.domains)||void 0===f?void 0:f.console)&&(0,b.jsx)("a",{href:(null===Y||void 0===Y||null===(g=Y.domains)||void 0===g?void 0:g.console)||"",target:"_blank",rel:"noopener noreferrer",className:G.linkedSection,children:(null===Y||void 0===Y||null===(x=Y.domains)||void 0===x?void 0:x.console)||""})]})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"MinIO Endpoint".concat(null!==Y&&void 0!==Y&&null!==(Z=Y.endpoints)&&void 0!==Z&&Z.minio&&1===(null===Y||void 0===Y||null===(w=Y.endpoints)||void 0===w?void 0:w.minio.length)?"":"s",":"),value:(0,b.jsxs)(o.Fragment,{children:[null!==Y&&void 0!==Y&&null!==(k=Y.domains)&&void 0!==k&&k.minio||null!==Y&&void 0!==Y&&null!==(C=Y.endpoints)&&void 0!==C&&C.minio?"":"-",(null===Y||void 0===Y||null===(R=Y.endpoints)||void 0===R?void 0:R.minio)&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:null===Y||void 0===Y||null===(N=Y.endpoints)||void 0===N?void 0:N.minio,target:"_blank",rel:"noopener noreferrer",className:"".concat(G.linkedSection," ").concat(G.autoGeneratedLink),children:(null===Y||void 0===Y||null===(I=Y.endpoints)||void 0===I?void 0:I.minio)||"-"}),(0,b.jsx)("br",{})]}),(null===Y||void 0===Y||null===(E=Y.domains)||void 0===E?void 0:E.minio)&&Y.domains.minio.map((function(e){return(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:G.linkedSection,children:e}),(0,b.jsx)("br",{})]},e)}))]})})})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:4,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Instances:",value:ue})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Clusters:",value:re,stkProps:{style:{marginRight:47}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Total Drives:",value:he,stkProps:{style:{marginRight:43}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Write Quorum:",value:null!==Y&&void 0!==Y&&null!==(F=Y.status)&&void 0!==F&&F.write_quorum?null===Y||void 0===Y||null===(_=Y.status)||void 0===_?void 0:_.write_quorum:0})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Drives Online:",value:null!==Y&&void 0!==Y&&null!==(B=Y.status)&&void 0!==B&&B.drives_online?null===Y||void 0===Y||null===(M=Y.status)||void 0===M?void 0:M.drives_online:0,stkProps:{style:{marginRight:8}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(D.Z,{label:"Drives Offline:",value:null!==Y&&void 0!==Y&&null!==(W=Y.status)&&void 0!==W&&W.drives_offline?null===Y||void 0===Y||null===(K=Y.status)||void 0===K?void 0:K.drives_offline:0,stkProps:{style:{marginRight:7}}})})]})]}),(0,b.jsx)(A.Z,{children:"Features"}),(0,b.jsxs)(v.Z,{sx:(0,a.Z)({},$),children:[(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"Logs:",value:L(X,"tenant-log")},V)),(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"AD/LDAP:",value:L(ie,"tenant-sts")},V)),(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"Encryption:",value:L(ne,"tenant-enc")},V))]}),(0,b.jsxs)(v.Z,{sx:(0,a.Z)({},$),children:[(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"MinIO TLS:",value:L(te,"tenant-tls")},V)),(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"Monitoring:",value:L(ee,"tenant-monitor")},V)),(0,b.jsx)(D.Z,(0,a.Z)({orientation:"row",label:"OpenID:",value:L(ae,"tenant-oidc")},V))]})]})}))},22512:function(e,n,t){var i=t(72791),a=t(20890),o=t(11135),l=t(25787),r=t(80184);n.Z=(0,l.Z)((function(e){var n;return(0,o.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,o=e.withBreak,l=void 0===o||o;return(0,r.jsxs)(i.Fragment,{children:[l&&(0,r.jsx)("br",{}),(0,r.jsx)(a.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),o=t(80184),l=(0,a.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=l},53767:function(e,n,t){var i=t(4942),a=t(63366),o=t(87462),l=t(72791),r=t(51184),s=t(45682),c=t(78519),d=t(82466),u=t(66934),m=t(31402),v=t(80184),p=["component","direction","spacing","divider","children"];function h(e,n){var t=l.Children.toArray(e).filter(Boolean);return t.reduce((function(e,i,a){return e.push(i),a0?u[t[n-1]]:"column";u[e]=i}}));a=(0,d.Z)(a,(0,r.k9)({theme:t},m,(function(e,t){return{"& > :not(style) + :not(style)":(0,i.Z)({margin:0},"margin".concat((a=t?u[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[a])),(0,s.NA)(l,e))};var a})))}return a=(0,r.dt)(t.breakpoints,a)})),g=l.forwardRef((function(e,n){var t=(0,m.Z)({props:e,name:"MuiStack"}),i=(0,c.Z)(t),l=i.component,r=void 0===l?"div":l,s=i.direction,d=void 0===s?"column":s,u=i.spacing,g=void 0===u?0:u,x=i.divider,Z=i.children,j=(0,a.Z)(i,p),b={direction:d,spacing:g};return(0,v.jsx)(f,(0,o.Z)({as:r,ownerState:b,ref:n},j,{children:x?h(Z,x):Z}))}));n.Z=g},23688:function(e,n,t){function i(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!==e&&void 0!==e&&this.setState(e)}function a(e){this.setState(function(n){var t=this.constructor.getDerivedStateFromProps(e,n);return null!==t&&void 0!==t?t:null}.bind(this))}function o(e,n){try{var t=this.props,i=this.state;this.props=e,this.state=n,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(t,i)}finally{this.props=t,this.state=i}}function l(e){var n=e.prototype;if(!n||!n.isReactComponent)throw new Error("Can only polyfill class components");if("function"!==typeof e.getDerivedStateFromProps&&"function"!==typeof n.getSnapshotBeforeUpdate)return e;var t=null,l=null,r=null;if("function"===typeof n.componentWillMount?t="componentWillMount":"function"===typeof n.UNSAFE_componentWillMount&&(t="UNSAFE_componentWillMount"),"function"===typeof n.componentWillReceiveProps?l="componentWillReceiveProps":"function"===typeof n.UNSAFE_componentWillReceiveProps&&(l="UNSAFE_componentWillReceiveProps"),"function"===typeof n.componentWillUpdate?r="componentWillUpdate":"function"===typeof n.UNSAFE_componentWillUpdate&&(r="UNSAFE_componentWillUpdate"),null!==t||null!==l||null!==r){var s=e.displayName||e.name,c="function"===typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+s+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==t?"\n "+t:"")+(null!==l?"\n "+l:"")+(null!==r?"\n "+r:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"===typeof e.getDerivedStateFromProps&&(n.componentWillMount=i,n.componentWillReceiveProps=a),"function"===typeof n.getSnapshotBeforeUpdate){if("function"!==typeof n.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");n.componentWillUpdate=o;var d=n.componentDidUpdate;n.componentDidUpdate=function(e,n,t){var i=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:t;d.call(this,e,n,i)}}return e}t.r(n),t.d(n,{polyfill:function(){return l}}),i.__suppressDeprecationWarning=!0,a.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0}}]);
-//# sourceMappingURL=1030.0c362d0c.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1030.0c362d0c.chunk.js.map b/portal-ui/build/static/js/1030.0c362d0c.chunk.js.map
deleted file mode 100644
index a2256b075..000000000
--- a/portal-ui/build/static/js/1030.0c362d0c.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1030.0c362d0c.chunk.js","mappings":"2MAkDA,KAAeA,EAAAA,EAAAA,IA5BA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXC,KAAM,CACJC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,gBAAiB,cACjBC,eAAgB,YAChBC,OAAQ,UACRC,SAAU,UACVC,MAAOV,EAAMW,QAAQC,KAAKC,KAC1BC,WAAY,qBAEb,GAeL,EARgB,SAAH,GAAkD,IAA5CC,EAAO,EAAPA,QAASC,EAAQ,EAARA,SAAaC,GAAI,YAC3C,OACE,qCAAYA,GAAI,IAAEC,UAAWH,EAAQb,KAAK,SACvCc,IAGP,G,qNC6HA,KAAejB,EAAAA,EAAAA,IAlIA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,kBACRkB,EAAAA,IAAkB,IACrBC,QAAS,CACPjB,QAAS,GACTkB,cAAe,GAEjBC,iBAAkB,CAChBC,MAAO,OACPC,SAAU,MAETC,EAAAA,IACF,GAsHL,EApHqB,SAAH,GASE,IARlBC,EAAO,EAAPA,QACAC,EAAS,EAATA,UACAC,EAAK,EAALA,MACAZ,EAAQ,EAARA,SACAD,EAAO,EAAPA,QAAQ,EAAD,EACPc,UAAAA,OAAS,OAAO,EAChBC,EAAgB,EAAhBA,iBAAiB,EAAD,EAChBC,UAAAA,OAAS,MAAG,KAAI,EAEVC,GAAWC,EAAAA,EAAAA,MACjB,GAAwCC,EAAAA,EAAAA,WAAkB,GAAM,eAAzDC,EAAY,KAAEC,EAAe,KAE9BC,GAAoBC,EAAAA,EAAAA,KACxB,SAACC,GAAe,OAAKA,EAAMC,OAAOC,aAAa,KAGjDC,EAAAA,EAAAA,YAAU,WACRV,GAASW,EAAAA,EAAAA,IAAqB,IAChC,GAAG,CAACX,KAEJU,EAAAA,EAAAA,YAAU,WACR,GAAIL,EAAmB,CACrB,GAAkC,KAA9BA,EAAkBO,QAEpB,YADAR,GAAgB,GAIa,UAA3BC,EAAkBQ,MACpBT,GAAgB,EAEpB,CACF,GAAG,CAACC,IAEJ,IAKMS,EAAajB,EACf,CACEd,QAAS,CACPgC,MAAOhC,EAAQO,mBAGnB,CAAEE,SAAU,KAAewB,WAAW,GAEtCJ,EAAU,GAYd,OAVIP,IACFO,EAAUP,EAAkBY,kBAEa,KAAvCZ,EAAkBY,kBAClBZ,EAAkBY,iBAAiBC,OAAS,KAE5CN,EAAUP,EAAkBO,WAK9B,UAAC,KAAM,gBACLO,KAAMxB,EACNZ,QAASA,GACL+B,GAAU,IACdM,OAAQ,QACR1B,QAAS,SAAC2B,EAAOC,GACA,kBAAXA,GACF5B,GAEJ,EACAR,UAAWH,EAAQb,KAAK,WAExB,UAAC,IAAW,CAACgB,UAAWH,EAAQa,MAAM,WACpC,iBAAKV,UAAWH,EAAQwC,UAAU,UAC/BxB,EAAU,IAAEH,MAEf,gBAAKV,UAAWH,EAAQyC,eAAe,UACrC,SAAC,IAAU,CACT,aAAW,QACXC,GAAI,QACJvC,UAAWH,EAAQ2C,YACnBC,QAASjC,EACTkC,eAAa,EACbC,KAAK,QAAO,UAEZ,SAAC,IAAS,YAKhB,SAAC,IAAS,CAACC,SAAS,KACpB,SAAC,IAAQ,CACPX,KAAMhB,EACNjB,UAAWH,EAAQgD,cACnBrC,QAAS,WA3DbU,GAAgB,GAChBJ,GAASW,EAAAA,EAAAA,IAAqB,IA4D1B,EACAC,QAASA,EACToB,aAAc,CACZ9C,UAAU,GAAD,OAAKH,EAAQkD,SAAQ,YAC5B5B,GAAgD,UAA3BA,EAAkBQ,KACnC9B,EAAQmD,cACR,KAGRC,iBACE9B,GAAgD,UAA3BA,EAAkBQ,KAAmB,IAAQ,OAGtE,SAAC,IAAa,CAAC3B,UAAWY,EAAmB,GAAKf,EAAQK,QAAQ,SAC/DJ,OAIT,G,uEC3IA,IApBuB,SAAH,GAOQ,IAAD,IANzBoD,MAAAA,OAAK,MAAG,KAAI,MACZC,MAAAA,OAAK,MAAG,IAAG,MACXC,YAAAA,OAAW,MAAG,SAAQ,MACtBC,SAAAA,OAAQ,MAAG,CAAC,EAAC,MACbC,SAAAA,OAAQ,MAAG,CAAC,EAAC,MACbC,SAAAA,OAAQ,MAAG,CAAC,EAAC,EAEb,OACE,UAAC,KAAK,gBAACC,UAAW,CAAEC,GAAI,SAAUC,GAAIN,IAAmBC,GAAQ,eAC/D,kCAAOM,MAAO,CAAEC,YAAa,EAAGC,WAAY,MAAWP,GAAQ,aAC5DJ,MAEH,kCAAOS,MAAO,CAAEC,YAAa,EAAGC,WAAY,MAAWN,GAAQ,aAC5DJ,QAIT,C,oJCmCA,EAnCiB,SAAH,GAII,IAHhBW,EAAU,EAAVA,WACAC,EAAS,EAATA,UAAU,EAAD,EACTC,QAAAA,OAAO,MAAG,UAAS,EAEnB,OACE,gBACEL,MAAO,CACLtD,MAAO,OACP4D,OAAQ,GACR7E,gBAAiB4E,EACjBE,aAAc,GACdC,QAAS,OACTC,mBAAoB,OACpBC,SAAU,UACV,SAEDN,EAAUO,KAAI,SAACC,EAAaC,GAC3B,IAAMC,EAAsC,IAApBF,EAAYpB,MAAeW,EACnD,OACE,gBAEEH,MAAO,CACLtD,MAAM,GAAD,OAAKoE,EAAc,KACxBR,OAAQ,OACR7E,gBAAiBmF,EAAY/E,MAC7B4E,mBAAoB,SACpB,mBANeI,EAAME,YAS7B,KAGN,ECgIA,EAjKuB,SAAH,GAKI,IAJtBC,EAAa,EAAbA,cACAC,EAAiB,EAAjBA,kBACAC,EAAW,EAAXA,YAAY,EAAD,EACXC,OAAAA,OAAM,MAAG,MAAK,EAERC,EAAS,CACb,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGIC,EAAU,UAEVC,EAAiBL,EAAkBM,QAAO,SAACC,EAAKC,GACpD,OAAOD,EAAMC,EAAUjC,KACzB,GAAG,GAEGkC,EAAaV,EAAgBM,EAE/BK,EAA6B,GAE3BC,EAAeX,EAAkBY,MACrC,SAACC,GAAI,MAAsB,aAAjBA,EAAKC,OAAsB,KAClC,CACHvC,MAAO,EACPuC,QAAS,SAGPd,EAAkB5C,OAAS,GAG7BsD,EAAY,CACV,CAAEnC,MAHqB8B,EAAiBM,EAAapC,MAG1B3D,MAAO,UAAW0D,MAAO,sBAGtDoC,EAAYV,EACTe,QAAO,SAACD,GAAO,MAAyB,aAApBA,EAAQA,OAAsB,IAClDpB,KAAI,SAACoB,EAASlB,GACb,MAAO,CACLrB,MAAOuC,EAAQvC,MACf3D,MAAOuF,EAAOP,GACdtB,MAAM,UAAD,OAAYwC,EAAQA,SAE7B,IAGJ,IAAIE,EAAoB,UAElBC,EAAuC,IAArBN,EAAapC,MAAewB,EAEhDkB,GAAkB,GACpBD,EAAoB,UACXC,GAAkB,KAC3BD,EAAoB,WAGtB,IAAME,EAA2B,CAC/B,CACE3C,MAAOoC,EAAapC,MACpB3D,MAAOoG,EACP1C,MAAO,yBACR,eACEoC,GAAS,CACZ,CACEnC,MAAOkC,EACP7F,MAAkB,QAAXsF,EAAmBE,EAAU,cACpC9B,MAAO,iBAIX,GAAe,QAAX4B,EAAkB,CACpB,IAAMiB,EAAwCD,EAAWxB,KAAI,SAAC0B,GAC5D,MAAO,CACL7C,MAAO6C,EAAQ7C,MACf3D,MAAOwG,EAAQxG,MACfyG,SAAUD,EAAQ9C,MAEtB,IAEA,OACE,gBAAKS,MAAO,CAAEtD,MAAO,OAAQ6F,aAAc,IAAK,UAC9C,SAAC,EAAQ,CACPpC,WAAYa,EACZZ,UAAWgC,EACX/B,QAASgB,KAIjB,CAEA,OACE,iBAAKrB,MAAO,CAAEwC,SAAU,WAAY9F,MAAO,IAAK4D,OAAQ,KAAM,WAC5D,gBACEN,MAAO,CAAEwC,SAAU,WAAYC,OAAQ,EAAGC,IAAK,GAAIC,OAAQ,KAC3DtG,UAAW6E,EAAY,UAEvB,SAAC,MAAU,CACTlB,MAAO,CACLxE,OAAQ,iBACR+E,aAAc,OACd7D,MAAO,GACP4D,OAAQ,SAId,iBACEN,MAAO,CACLwC,SAAU,WACVE,IAAK,MACLE,KAAM,MACNC,UAAW,wBACX3C,WAAY,OACZrE,MAAO,OACPD,SAAU,IACV,SAEAkH,MAAMxB,GAAiD,OAA/ByB,EAAAA,EAAAA,IAAazB,MAEzC,0BACE,UAAC0B,EAAA,EAAQ,CAACtG,MAAO,IAAK4D,OAAQ,IAAI,WAChC,SAAC2C,EAAA,EAAG,CACFC,KAAM,CAAC,CAAE1D,MAAO,MAChB2D,GAAI,MACJC,GAAI,MACJC,QAAQ,QACRC,YAAa,GACbC,YAAa,GACbC,KAAMnC,EACNoC,mBAAmB,EACnBC,OAAQ,UAEV,SAACT,EAAA,EAAG,CACFC,KAAMf,EACNgB,GAAI,MACJC,GAAI,MACJC,QAAQ,QACRC,YAAa,GACbC,YAAa,GAAG,SAEfpB,EAAWxB,KAAI,SAACgD,EAAO9C,GAAK,OAC3B,SAAC+C,EAAA,EAAI,CAEHJ,KAAMG,EAAM9H,MACZ6H,OAAQ,QAAO,uBAFM7C,GAGrB,aAOhB,C,uRC4DA,GAAe3F,EAAAA,EAAAA,IA5MA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,gBACXyI,SAAU,CACRjI,SAAU,KAETkI,EAAAA,IACAC,EAAAA,IACF,GAqML,EAnM0B,SAAH,GAMI,IALzBzF,EAAI,EAAJA,KACA0F,EAAoB,EAApBA,qBACAC,EAAS,EAATA,UACAC,EAAQ,EAARA,SACAhI,EAAO,EAAPA,QAEMiB,GAAWC,EAAAA,EAAAA,MACjB,GAAkCC,EAAAA,EAAAA,WAAkB,GAAM,eAAnD8G,EAAS,KAAEC,EAAY,KAC9B,GAAoC/G,EAAAA,EAAAA,UAAiB,IAAG,eAAjDgH,EAAU,KAAEC,EAAa,KAChC,GAA0CjH,EAAAA,EAAAA,WAAkB,GAAM,eAA3DkH,EAAa,KAAEC,EAAgB,KACtC,GACEnH,EAAAA,EAAAA,UAAiB,IAAG,eADfoH,EAAqB,KAAEC,EAAwB,KAEtD,GACErH,EAAAA,EAAAA,UAAiB,IAAG,eADfsH,EAAqB,KAAEC,EAAwB,KAEtD,GACEvH,EAAAA,EAAAA,UAAiB,IAAG,eADfwH,EAAqB,KAAEC,EAAwB,KAEtD,GAA8CzH,EAAAA,EAAAA,WAAkB,GAAK,eAA9D0H,EAAe,KAAEC,EAAkB,KAEpCC,GAAgBC,EAAAA,EAAAA,cACpB,SAACC,GACC,IAAMC,EAAU,IAAIC,OAAO,2BAE3B,GACO,eADCF,EAEJH,EAAmBI,EAAQE,KAAKjB,GAGtC,GACA,CAACA,KAGHxG,EAAAA,EAAAA,YAAU,WACRoH,EAAc,aAChB,GAAG,CAACZ,EAAYY,IAqDhB,OACE,SAACM,EAAA,EAAY,CACXxI,MAAO,uBACPD,UAAWwB,EACXzB,QAvDgB,WAClBmH,GAAqB,EACvB,EAqDyB,UAErB,UAACwB,EAAA,GAAI,CAACC,WAAS,aACb,UAACD,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQyJ,oBAAoB,WACxD,gBAAKtJ,UAAWH,EAAQ2H,SAAS,SAAC,mGAIlC,mBACA,mBACA,SAAC2B,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQ0J,aAAa,UACjD,SAACC,EAAA,EAAe,CACdrG,MAAO6E,EACP9E,MAAO,gBACPX,GAAI,aACJkH,KAAM,aACNC,YAAa,gDACbC,SAAU,SAACC,GACT3B,EAAc2B,EAAEC,OAAO1G,MACzB,OAGJ,SAACgG,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQ0J,aAAa,UACjD,SAACO,EAAA,EAAiB,CAChB3G,MAAM,gBACNZ,GAAG,mBACHkH,KAAK,mBACLM,QAAS7B,EACTyB,SAAU,SAACC,GACTzB,GAAkBD,EACpB,EACAhF,MAAO,4BACP8G,gBAAiB,CAAC,MAAO,UAG5B9B,IACC,UAAC,EAAA+B,SAAQ,YACP,SAACd,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQ0J,aAAa,UACjD,SAACC,EAAA,EAAe,CACdrG,MAAOiF,EACPlF,MAAO,WACPX,GAAI,gBACJkH,KAAM,gBACNC,YAAa,mCACbC,SAAU,SAACC,GACTvB,EAAyBuB,EAAEC,OAAO1G,MACpC,OAGJ,SAACgG,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQ0J,aAAa,UACjD,SAACC,EAAA,EAAe,CACdrG,MAAOmF,EACPpF,MAAO,WACPX,GAAI,wBACJkH,KAAM,wBACNC,YAAa,gCACbC,SAAU,SAACC,GACTrB,EAAyBqB,EAAEC,OAAO1G,MACpC,OAGJ,SAACgG,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQ0J,aAAa,UACjD,SAACC,EAAA,EAAe,CACdrG,MAAOqF,EACPtF,MAAO,WACPX,GAAI,wBACJkH,KAAM,wBACNC,YAAa,gCACbC,SAAU,SAACC,GACTnB,EAAyBmB,EAAEC,OAAO1G,MACpC,aAMV,UAACgG,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQqK,eAAe,WACnD,SAAC,KAAM,CACL3H,GAAI,QACJmD,QAAQ,UACRjD,QAnIQ,WAChBwF,EAAc,IACdE,GAAiB,GACjBE,EAAyB,IACzBE,EAAyB,IACzBE,EAAyB,GAC3B,EA8HUvF,MAAM,WAER,SAAC,KAAM,CACLX,GAAI,cACJZ,KAAK,SACL+D,QAAQ,aACRyE,UACGzB,GACAR,IACmC,KAAjCE,EAAsBgC,QACY,KAAjC9B,EAAsB8B,QACW,KAAjC5B,EAAsB4B,SAC1BtC,EAEFrF,QA1Ie,WACvBsF,GAAa,GAEb,IAAIsC,EAAU,CACZC,MAAOtC,EACPuC,mBAAmB,GAGrB,GAAIrC,EAAe,CACjB,IAAMsC,EAAgB,CACpBC,eAAgB,CACdD,SAAUpC,EACVsC,SAAUpC,EACVqC,SAAUnC,IAGd6B,GAAO,kBACFA,GACAG,EAEP,CAEAI,EAAAA,EAAAA,OAEI,MAAM,sBAAD,OACiBhD,EAAS,oBAAYC,GAC3CwC,GAEDQ,MAAK,WACJ9C,GAAa,GACbjH,GAASgK,EAAAA,EAAAA,IAAmB,+BAC5BnD,GAAqB,EACvB,IACCoD,OAAM,SAACC,GACNlK,GAASmK,EAAAA,EAAAA,IAA0BD,IACnCjD,GAAa,EACf,GACJ,EAsGU7E,MAAO,gBAMnB,I,mGC1DA,IA1JoCrE,EAAAA,EAAAA,IAAW,SAACC,GAAK,MAAM,CACzDE,KAAM,CACJiF,OAAQ,GACRC,aAAc,GAEhBgH,aAAc,CACZ9L,gBAAiB,WAEnB+L,IAAK,CACHjH,aAAc,EACd9E,gBAAiB,WAEnBgM,SAAU,CACRnM,QAAS,OAEZ,GAfmCJ,CAehCwM,EAAAA,IA2IWxM,EAAAA,EAAAA,IAjKA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXuM,WAAY,CACVC,UAAW,WAEZ,GA4JL,EAzIwB,SAAH,GAMI,IAAD,YALtB1L,EAAO,EAAPA,QACA2L,EAAM,EAANA,OACAC,EAAY,EAAZA,aACAC,EAAO,EAAPA,QACAV,EAAK,EAALA,MAEIW,EAAiB,CAAExI,MAAO,MAAOyI,KAAM,IACvCC,EAAsB,CAAE1I,MAAO,MAAOyI,KAAM,IAC5CE,EAAkB,CAAE3I,MAAO,MAAOyI,KAAM,IACxCG,EAAsB,CAAE5I,MAAO,MAAOyI,KAAM,IAC5CI,EAAuB,CAAE7I,MAAO,MAAOyI,KAAM,IAEjD,GAAiB,QAAjB,EAAIJ,EAAOS,cAAM,OAAO,QAAP,EAAb,EAAeC,aAAK,OAApB,EAAsBP,IAAK,CAC7B,IACMQ,GADIC,EAAAA,EAAAA,IAAU,GAAD,OAAIZ,EAAOS,OAAOC,MAAMP,MAAO,GAClCU,MAAM,KACtBV,EAAIxI,MAAQgJ,EAAM,GAClBR,EAAIC,KAAOO,EAAM,EACnB,CACA,GAAiB,QAAjB,EAAIX,EAAOS,cAAM,OAAO,QAAP,EAAb,EAAeC,aAAK,OAApB,EAAsBL,SAAU,CAClC,IACMM,GADIC,EAAAA,EAAAA,IAAU,GAAD,OAAIZ,EAAOS,OAAOC,MAAML,WAAY,GACvCQ,MAAM,KACtBR,EAAS1I,MAAQgJ,EAAM,GACvBN,EAASD,KAAOO,EAAM,EACxB,CACA,GAAiB,QAAjB,EAAIX,EAAOS,cAAM,OAAO,QAAP,EAAb,EAAeC,aAAK,OAApB,EAAsBI,eAAgB,CACxC,IACMH,GADIzF,EAAAA,EAAAA,IAAa8E,EAAOS,OAAOC,MAAMI,gBAAgB,GAC3CD,MAAM,KACtBP,EAAK3I,MAAQgJ,EAAM,GACnBL,EAAKF,KAAOO,EAAM,EACpB,CAEA,IAAII,EAAkC,GACtC,GAAKf,EAAOgB,OAAiC,IAAxBhB,EAAOgB,MAAMxK,OAI3B,CACLuK,EAAgBf,EAAOgB,MAAMlI,KAAI,SAACmI,GAChC,MAAO,CAAEtJ,MAAOsJ,EAAW9J,KAAM+C,QAAS+G,EAAWhD,KACvD,IACA,IAAIiD,EAAgBlB,EAAOgB,MACxB7G,QAAO,SAAC8G,GACP,MAA2B,aAApBA,EAAW9K,IACpB,IACCuD,QAAO,SAACyH,EAAKF,GAAU,OAAKE,EAAMF,EAAW9J,IAAI,GAAE,GAClDiK,EAAcpB,EAAOgB,MACtB7G,QAAO,SAAC8G,GACP,MAA2B,aAApBA,EAAW9K,IACpB,IACCuD,QAAO,SAACyH,EAAKF,GAAU,OAAKE,EAAMF,EAAW9J,IAAI,GAAE,GAGhDwJ,GADIzF,EAAAA,EAAAA,IAAakG,GAAa,GACpBP,MAAM,KACtBL,EAAU7I,MAAQgJ,EAAM,GACxBH,EAAUJ,KAAOO,EAAM,GAEvB,IACMU,GADKnG,EAAAA,EAAAA,IAAagG,GAAe,GACdL,MAAM,KAC/BN,EAAS5I,MAAQ0J,EAAc,GAC/Bd,EAASH,KAAOiB,EAAc,EAChC,KA5BgD,CAAC,IAAD,IAC9CN,EAAgB,CACd,CAAEpJ,OAAoB,QAAb,EAAAqI,EAAOS,cAAM,OAAO,QAAP,EAAb,EAAeC,aAAK,WAAP,EAAb,EAAsBI,iBAAkB,EAAG5G,QAAS,YAEjE,CAsFA,OACE,UAAC,WAAc,WACZgG,IACC,gBAAK1L,UAAWH,EAAQuL,SAAS,UAC/B,SAACjC,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQyL,WAAW,UAC/C,SAACwB,EAAA,EAAM,CAACnJ,MAAO,CAAEtD,MAAO,GAAI4D,OAAQ,UAjEtB,WACP,IAAD,IAAd,OAAKyH,EAwDE,KAvDY,KAAVV,GACL,SAAC+B,EAAA,EAAU,CAACC,aAAchC,EAAOiC,WAAW,KAE5C,UAAC9D,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,WAChB,SAACyJ,EAAA,EAAc,CACbvI,eAA4B,QAAb,EAAA6G,EAAOS,cAAM,OAAO,QAAP,EAAb,EAAeC,aAAK,WAAP,EAAb,EAAsBP,MAAO,EAC5C/G,kBAAmB2H,EACnB1H,YAAa,GACbC,OAAQ,SAEV,UAACqI,EAAA,EAAK,CACJ3J,UAAW,CAAEC,GAAI,SAAUC,GAAI,OAC/B0J,QAAS,CAAE3J,GAAI,EAAGC,GAAI,EAAG2J,GAAI,GAC7BC,WAAY,UACZpO,OAAQ,aAAa,YAElBsM,EAAOgB,OAAiC,IAAxBhB,EAAOgB,MAAMxK,UAC9B,SAAC,EAAAiI,SAAQ,WACP,SAACsD,EAAA,EAAc,CACbrK,MAAO,YACPE,YAAa,MACbD,MAAK,UAAK2I,EAAK3I,MAAK,YAAI2I,EAAKF,UAIlCJ,EAAOgB,OAAShB,EAAOgB,MAAMxK,OAAS,IACrC,UAAC,EAAAiI,SAAQ,YACP,SAACsD,EAAA,EAAc,CACbrK,MAAO,YACPE,YAAa,MACbD,MAAK,UAAK4I,EAAS5I,MAAK,YAAI4I,EAASH,SAEvC,SAAC2B,EAAA,EAAc,CACbrK,MAAO,UACPE,YAAa,MACbD,MAAK,UAAK6I,EAAU7I,MAAK,YAAI6I,EAAUJ,WAI5CH,IACC,SAAC8B,EAAA,EAAc,CACbnK,YAAa,MACbF,MAAO,UACPC,OACE,iBAAMnD,UAAWyL,EAAa,UAC5B,SAAC,MAAU,aAW7B,CAWK+B,KAGP,K,uDC8HA,GAAe3O,EAAAA,EAAAA,IAvQA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,gBACX0O,aAAc,CACZtJ,QAAS,OACT+B,aAAc,IAEhBwH,cAAe,CACbC,WAAY,GACZxJ,QAAS,OACTmJ,WAAY,SACZ,QAAS,CACPjN,MAAO,GACP4D,OAAQ,IAEV,WAAY,CACV2J,WAAY,aAGbnG,EAAAA,IACAC,EAAAA,IACF,GAmPL,EAjPoB,SAAH,GAOI,IANnBzF,EAAI,EAAJA,KACA0F,EAAoB,EAApBA,qBACAC,EAAS,EAATA,UACAC,EAAQ,EAARA,SACAgG,EAAO,EAAPA,QACAhO,EAAO,EAAPA,QAEMiB,GAAWC,EAAAA,EAAAA,MACjB,GAAkCC,EAAAA,EAAAA,WAAkB,GAAM,eAAnD8G,EAAS,KAAEC,EAAY,KAC9B,GAA0C/G,EAAAA,EAAAA,UAAiB,IAAG,eAAvD8M,EAAa,KAAEC,EAAgB,KACtC,GAAwC/M,EAAAA,EAAAA,UAAmB,CAAC,KAAI,eAAzDgN,EAAY,KAAEC,EAAe,KACpC,GAAoDjN,EAAAA,EAAAA,WAAkB,GAAK,eAApEkN,EAAkB,KAAEC,EAAqB,KAChD,GAAgDnN,EAAAA,EAAAA,UAAoB,EAAC,IAAM,eAApEoN,EAAgB,KAAEC,EAAmB,MAE5C7M,EAAAA,EAAAA,YAAU,WACR,GAAIqM,EAAS,CACX,IAAMS,EAAmBT,EAAQU,SAAW,GAG5C,GAFAR,EAAiBO,GAEQ,KAArBA,EAAyB,CAE3B,IAAME,EAAgB,IAAIxF,OACxB,mEAGFmF,EAAsBK,EAAcvF,KAAKqF,GAC3C,MACEH,GAAsB,GAGxB,GAAIN,EAAQY,OAASZ,EAAQY,MAAMzM,OAAS,EAAG,CAC7CiM,EAAgBJ,EAAQY,OAExB,IAAMC,EAAc,IAAI1F,OACtB,8CAGI2F,EAAqBd,EAAQY,MAAMnK,KAAI,SAACsK,GAC5C,MAAsB,KAAlBA,EAAOxE,QACFsE,EAAYzF,KAAK2F,EAI5B,IAEAP,EAAoBM,EACtB,CACF,CACF,GAAG,CAACd,IAEJ,IA4CMgB,EAAoB,WACxB,IAAMC,GAAY,OAAOd,GACnBe,GAAgB,OAAOX,GAE7BU,EAAaE,KAAK,IAClBD,EAAiBC,MAAK,GAEtBf,EAAgBa,GAChBT,EAAoBU,EACtB,EAqBA,OACE,SAAC7F,EAAA,EAAY,CACXxI,MAAK,gCAA2BmH,GAChCpH,UAAWwB,EACXzB,QA9EgB,WAClBmH,GAAqB,EACvB,EA4EyB,UAErB,SAACwB,EAAA,GAAI,CAACC,WAAS,YACb,UAACD,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQyJ,oBAAoB,WACxD,UAACH,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAS,UAAKH,EAAQoP,mBAAoB,WAC3D,gBAAKjP,UAAWH,EAAQqP,cAAc,UACpC,SAAC1F,EAAA,EAAe,CACdjH,GAAG,iBACHkH,KAAK,iBACLE,SAAU,SAACC,GACTmE,EAAiBnE,EAAEC,OAAO1G,OAE1BgL,EAAsBvE,EAAEC,OAAOsF,SAASC,MAC1C,EACAlM,MAAM,iBACNC,MAAO2K,EACPpE,YACE,qDAEFX,QACE,yEAEFiC,MACGkD,EAEG,GADA,yFAKV,4BACE,wBAAI,mBACJ,yBACGF,EAAa1J,KAAI,SAACsK,EAAQpK,GACzB,OACE,iBACExE,UAAS,UAAKH,EAAQ4N,cAAe,WAGrC,SAACjE,EAAA,EAAe,CACdjH,GAAE,uBAAkBiC,EAAME,YAC1B+E,KAAI,uBAAkBjF,EAAME,YAC5BiF,SAAU,SAACC,IAlFP,SAACzG,EAAeqB,GACxC,IAAMsK,GAAY,OAAOd,GACzBc,EAAatK,GAASrB,EAEtB8K,EAAgBa,EAClB,CA8EwBO,CAAkBzF,EAAEC,OAAO1G,MAAOqB,GApDzB,SAAC8K,EAAsB9K,GACtD,IAAM+K,GAAe,OAAOnB,GAC5BmB,EAAgB/K,GAAS8K,EAEzBjB,EAAoBkB,EACtB,CAgDwBC,CACE5F,EAAEC,OAAOsF,SAASC,MAClB5K,EAEJ,EACAtB,MAAK,uBAAkBsB,EAAQ,GAC/BrB,MAAOyL,EACPlF,YAAa,8BACbX,QACE,gDAEFiC,MACGoD,EAAiB5J,GAEd,GADA,sEAIR,gBAAKxE,UAAWH,EAAQ6N,cAAc,UACpC,SAAC+B,EAAA,EAAU,CACT9M,KAAM,QACNF,QAASoM,EACT1E,SAAU3F,IAAUwJ,EAAahM,OAAS,EAAE,UAE5C,SAAC0N,EAAA,EAAO,SAIZ,gBAAK1P,UAAWH,EAAQ6N,cAAc,UACpC,SAAC+B,EAAA,EAAU,CACT9M,KAAM,QACNF,QAAS,kBAhGP,SAACkN,GACzB,IAAMC,EAAkB5B,EAAarI,QACnC,SAACkK,EAAGrL,GAAK,OAAKA,IAAUmL,CAAW,IAG/BG,EAAoB1B,EAAiBzI,QACzC,SAACkK,EAAGrL,GAAK,OAAKA,IAAUmL,CAAW,IAGrC1B,EAAgB2B,GAChBvB,EAAoByB,EACtB,CAqFuCC,CAAkBvL,EAAM,EACvC2F,SAAU6D,EAAahM,QAAU,EAAE,UAEnC,SAACgO,EAAA,EAAU,UAET,2BA1CmBxL,EAAME,YA6CrC,aAIN,UAACyE,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIzD,UAAWH,EAAQqK,eAAe,WACnD,SAAC,KAAM,CACL3H,GAAI,oBACJZ,KAAK,SACL+D,QAAQ,UACRjD,QApKM,WAChBsL,EAAiB,IACjBI,GAAsB,GACtBF,EAAgB,CAAC,KACjBI,EAAoB,EAAC,GACvB,EAgKYnL,MAAO,WAET,SAAC,KAAM,CACLX,GAAI,cACJZ,KAAK,SACL+D,QAAQ,aACRyE,SACErC,IACCoG,GACDE,EAAiBzI,QAAO,SAACiJ,GAAM,OAAMA,CAAM,IAAE5M,OAAS,EAExDS,QAzKc,WACxBsF,GAAa,GAEb,IAAIsC,EAAU,CACZwD,QAAS,CACPU,QAAST,EACTW,MAAOT,EAAarI,QAAO,SAACsK,GAAW,MAA4B,KAAvBA,EAAY7F,MAAa,MAGzEQ,EAAAA,EAAAA,OAEI,MAAM,sBAAD,OACiBhD,EAAS,oBAAYC,EAAQ,YACnDwC,GAEDQ,MAAK,WACJ9C,GAAa,GACbjH,GAASgK,EAAAA,EAAAA,IAAmB,iCAC5BnD,GAAqB,EACvB,IACCoD,OAAM,SAACC,GACNjD,GAAa,GACbjH,GAASmK,EAAAA,EAAAA,IAA0BD,GACrC,GACJ,EAkJY9H,MAAO,kBAOrB,I,sBC1MMgN,EAAsB,WAAkD,IAAjDC,EAAqB,uDAAG,MAAOtQ,EAAY,uCACtE,MAAyB,QAAlBsQ,EACHtQ,EAAQuQ,SACU,WAAlBD,EACAtQ,EAAQwQ,YACU,UAAlBF,EACAtQ,EAAQyQ,WACRzQ,EAAQ0Q,SACd,EAEMC,EAAiB,SAAH,GAMb,IAAD,EALJhF,EAAM,EAANA,OACA3L,EAAO,EAAPA,QAKA,OAAK2L,GAKH,SAAC,EAAe,CACdA,OAAQA,EACRtI,MAAO,UACP8H,MAAO,GACPU,SAAS,EACTD,aAAcyE,EAA0B,OAAN1E,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,WAAR,EAAN,EAAgBkE,cAAetQ,KAT5D,IAYX,EAEM4Q,EAAY,SAACC,GAAyC,IAAnBC,EAAQ,uDAAG,GAClD,OACE,SAAC7G,EAAA,EAAiB,CAChBE,gBAAiB,CAAC,UAAW,YAC7BD,QAAS2G,EACTvN,MAAOuN,EACPnO,GAAE,UAAKoO,EAAQ,WACflH,KAAI,UAAKkH,EAAQ,WACjBhH,SAAU,WAAO,EACjBiH,YAAU,GAGhB,EAEMC,EAAkB,CACtB1M,QAAS,OACT2M,eAAgB,gBAChBC,UAAW,OACX,4BAA6B,CAC3BC,SAAU,WAIRC,EAAwB,CAC5B5N,SAAU,CACR6N,GAAI,CACFC,KAAM,EACNvN,YAAa,GACbO,QAAS,OACTmJ,WAAY,SACZwD,eAAgB,gBAChB,4BAA6B,CAC3BlN,YAAa,UAInBN,SAAU,CACRK,MAAO,CACLyN,SAAU,OA6ThB,GAAevS,EAAAA,EAAAA,IAncA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,kBACRsS,EAAAA,IAAmB,IACtBjB,SAAU,CACR5Q,MAAOV,EAAMW,QAAQuL,MAAMrL,KAC3B,cAAe,CACbU,MAAO,GACP4D,OAAQ,GACRL,YAAa,IAGjByM,YAAa,CACX7Q,MAAOV,EAAMW,QAAQ6R,QAAQ3R,KAC7B,cAAe,CACbU,MAAO,GACP4D,OAAQ,GACRL,YAAa,IAGjB0M,WAAY,CACV9Q,MAAOV,EAAMW,QAAQ8R,QAAQ5R,KAC7B,cAAe,CACbU,MAAO,GACP4D,OAAQ,GACRL,YAAa,IAGjB2M,UAAW,CACT/Q,MAAO,OACP,cAAe,CACba,MAAO,GACP4D,OAAQ,GACRL,YAAa,IAGjB4N,cAAe,CACb,QAAS,CACP,QAAS,CACPJ,SAAU,GACVjN,QAAS,QACTsN,MAAO,QAET,MAAO,CACLC,UAAW,SACXC,SAAU,aACVC,aAAc,cAEhB,QAAS,CACPC,MAAO,QAETA,MAAO,OACP3L,aAAc,IAGlB4L,cAAe,CACbtS,MAAOV,EAAMW,QAAQC,KAAKC,KAC1BC,WAAY,sBAEdmS,kBAAmB,CACjBL,UAAW,YAEVM,EAAAA,EAAAA,IAAmBlT,EAAMsO,QAAQ,KACnC,GAqYL,EAzTsB,SAAH,GAAsC,IAAD,gDAA/BvN,EAAO,EAAPA,QACjBiB,GAAWC,EAAAA,EAAAA,MACjB,GAAwCkR,EAAAA,EAAAA,MAAhCC,EAAU,EAAVA,WAAYC,EAAe,EAAfA,gBAEd3G,GAASpK,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM+Q,QAAQC,UAAU,IAClEC,GAAalR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAC7CkR,IAAIlR,EAAM+Q,QAAQC,WAAY,cAAc,EAAM,IAE9CG,IAAoBpR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OACpDkR,IAAIlR,EAAM+Q,QAAQC,WAAY,qBAAqB,EAAM,IAErDI,IAAoBrR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OACpDkR,IAAIlR,EAAM+Q,QAAQC,WAAY,qBAAqB,EAAM,IAErDK,IAAWtR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAC3CkR,IAAIlR,EAAM+Q,QAAQC,WAAY,YAAY,EAAM,IAE5CM,IAAYvR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAC5CkR,IAAIlR,EAAM+Q,QAAQC,WAAY,gBAAgB,EAAM,IAEhDO,IAAcxR,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAC9CkR,IAAIlR,EAAM+Q,QAAQC,WAAY,kBAAkB,EAAM,IAGxD,IAAkCrR,EAAAA,EAAAA,UAAiB,GAAE,iBAA9C6R,GAAS,MAAEC,GAAY,MAC9B,IAAkC9R,EAAAA,EAAAA,UAAiB,GAAE,iBAA9C+R,GAAS,MAAEC,GAAY,MAC9B,IAA8BhS,EAAAA,EAAAA,UAAiB,GAAE,iBAA1CiS,GAAO,MAAEC,GAAU,MAC1B,IAAoDlS,EAAAA,EAAAA,WAAkB,GAAM,iBAArEmS,GAAkB,MAAEC,GAAqB,MAChD,IAA8CpS,EAAAA,EAAAA,WAAkB,GAAM,iBAA/DqS,GAAe,MAAEC,GAAkB,OAE1C9R,EAAAA,EAAAA,YAAU,WACJgK,IACFsH,GAAatH,EAAO+H,MAAMvR,QAC1BkR,GAAW1H,EAAOgI,eAAiB,GACnCR,GAAaxH,EAAOiI,iBAAmB,GAE3C,GAAG,CAACjI,IASJ,OACE,UAAC,EAAAvB,SAAQ,WACNkJ,KACC,SAAC,EAAiB,CAChBlR,KAAMkR,GACNxL,qBAAsB,SAAC+L,GACrBN,IAAsB,GAClBM,GACF5S,GAAS6S,EAAAA,EAAAA,KAEb,EACA9L,SAAUqK,GAAc,GACxBtK,UAAWuK,GAAmB,KAIjCkB,KACC,SAAC,EAAW,CACVpR,KAAMoR,GACNxL,SAAUqK,GAAc,GACxBtK,UAAWuK,GAAmB,GAC9BtE,SAAe,OAANrC,QAAM,IAANA,OAAM,EAANA,EAAQqC,UAAW,KAC5BlG,qBA7BsB,SAAC+L,GAC7BJ,IAAmB,GACfI,GACF5S,GAAS6S,EAAAA,EAAAA,KAEb,KA4BI,SAACC,EAAA,EAAY,CAACC,WAAW,EAAM,SAAC,aAEhC,SAACrD,EAAc,CAAChF,OAAQA,EAAQ3L,QAASA,KAEzC,UAACsJ,EAAA,GAAI,CAACC,WAAS,aACb,UAACD,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIC,GAAI,GAAI2J,GAAI,EAAE,WAC/B,SAAClE,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CAACrK,MAAO,SAAUC,MAAa,OAANqI,QAAM,IAANA,OAAM,EAANA,EAAQsI,kBAElD,SAAC3K,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAM,SACNC,OACE,SAAC4Q,EAAA,EAAO,CACNpQ,MAAO,CACLU,SAAU,SACV2P,aAAc,WACdC,WAAY,SACZC,UAAW,aAEbzR,QAAS,WACP2Q,IAAsB,EACxB,EAAE,SAED5H,EAASA,EAAOlB,MAAQ,UAKjC,SAACnB,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,0BAAI,WAEF,SAAC,KAAM,CACLlB,GAAI,eACJ4R,MAAM,SAAC,MAAQ,IACf1R,QAAS,WACP6Q,IAAmB,EACrB,UAIN,SAACnK,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAO,WACPC,OACE,UAAC,EAAA8G,SAAQ,WACE,OAANuB,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,OAAf,EAAiBU,SACW,MAAvB,OAAN/C,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBU,UACZ,OAAN/C,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,OAAjB,EAAmB7F,QAEhB,GADA,KAGG,OAAN/C,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB7F,WAClB,UAAC,EAAAtE,SAAQ,YACP,cACEoK,KAAY,OAAN7I,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB7F,QACzB1E,OAAO,SACPyK,IAAI,sBACJtU,UAAS,UAAKH,EAAQiS,cAAa,YAAIjS,EAAQkS,mBAAoB,UAE5D,OAANvG,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB7F,UAAW,OAEjC,sBAIG,OAAN/C,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBU,UAAwC,MAAvB,OAAN/C,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBU,WAC5C,cACE8F,MAAY,OAAN7I,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBU,UAAW,GAClC1E,OAAO,SACPyK,IAAI,sBACJtU,UAAWH,EAAQiS,cAAc,UAE1B,OAANtG,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBU,UAAW,aAOzC,SAACpF,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAK,wBACG,OAANsI,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,OAAjB,EAAmB3F,OACiB,KAA9B,OAANjD,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB3F,MAAMzM,QACrB,GACA,IAAG,KAETmB,OACE,UAAC,EAAA8G,SAAQ,WACC,OAANuB,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,OAAf,EAAiBY,OAAgB,OAANjD,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,OAAjB,EAAmB3F,MAE5C,GADA,KAEG,OAANjD,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB3F,SAClB,UAAC,EAAAxE,SAAQ,YACP,cACEoK,KAAY,OAAN7I,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB3F,MACzB5E,OAAO,SACPyK,IAAI,sBACJtU,UAAS,UAAKH,EAAQiS,cAAa,YAAIjS,EAAQkS,mBAAoB,UAE5D,OAANvG,QAAM,IAANA,GAAiB,QAAX,EAANA,EAAQ4I,iBAAS,WAAX,EAAN,EAAmB3F,QAAS,OAE/B,sBAIG,OAANjD,QAAM,IAANA,GAAe,QAAT,EAANA,EAAQqC,eAAO,WAAT,EAAN,EAAiBY,QAChBjD,EAAOqC,QAAQY,MAAMnK,KAAI,SAACsK,GACxB,OACE,UAAC,EAAA3E,SAAQ,YACP,cACEoK,KAAMzF,EACN/E,OAAO,SACPyK,IAAI,sBACJtU,UAAWH,EAAQiS,cAAc,SAEhClD,KAEH,oBATaA,EAYnB,eAMZ,UAACzF,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAIC,GAAI,GAAI2J,GAAI,EAAE,WAC/B,SAAClE,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CAACrK,MAAO,aAAcC,MAAO4P,QAE9C,SAAC5J,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAO,YACPC,MAAO0P,GACPxP,SAAU,CACRM,MAAO,CACLC,YAAa,UAKrB,SAACuF,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAM,gBACNC,MAAO8P,GACP5P,SAAU,CACRM,MAAO,CACLC,YAAa,UAKrB,SAACuF,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAO,gBACPC,MACQ,OAANqI,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,OAAd,EAAgBsI,aAAqB,OAAN/I,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,WAAR,EAAN,EAAgBsI,aAAe,OAIpE,SAACpL,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAO,iBACPC,MACQ,OAANqI,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,OAAd,EAAgBuI,cACN,OAANhJ,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,WAAR,EAAN,EAAgBuI,cAChB,EAENnR,SAAU,CACRM,MAAO,CACLC,YAAa,SAKrB,SAACuF,EAAA,GAAI,CAACE,MAAI,EAAC5F,GAAI,GAAG,UAChB,SAAC8J,EAAA,EAAc,CACbrK,MAAO,kBACPC,MACQ,OAANqI,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,OAAd,EAAgBwI,eACN,OAANjJ,QAAM,IAANA,GAAc,QAAR,EAANA,EAAQS,cAAM,WAAR,EAAN,EAAgBwI,eAChB,EAENpR,SAAU,CACRM,MAAO,CACLC,YAAa,eAQzB,SAACgQ,EAAA,EAAY,UAAC,cACd,UAACc,EAAA,EAAG,CAACxD,IAAE,UAAOL,GAAkB,WAC9B,SAACtD,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAM,QACNC,MAAOsN,EAAU6B,EAAY,eACzBrB,KAGN,SAAC1D,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAO,WACPC,MAAOsN,EAAUkC,GAAW,eACxB1B,KAEN,SAAC1D,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAO,cACPC,MAAOsN,EAAUgC,GAAmB,eAChCxB,QAGR,UAACyD,EAAA,EAAG,CAACxD,IAAE,UAAOL,GAAkB,WAC9B,SAACtD,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAM,aACNC,MAAOsN,EAAUiC,GAAU,eACvBzB,KAGN,SAAC1D,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAO,cACPC,MAAOsN,EAAU+B,GAAmB,mBAChCvB,KAEN,SAAC1D,EAAA,GAAc,QACbnK,YAAY,MACZF,MAAO,UACPC,MAAOsN,EAAUmC,GAAa,gBAC1B3B,SAKd,G,mFC3cA,KAAepS,EAAAA,EAAAA,IA5BA,SAACC,GAAY,aAC1BC,EAAAA,EAAAA,GAAa,CACX4V,WAAY,CACVnV,OAAoB,QAAb,EAAAV,EAAMW,eAAO,aAAb,EAAeuL,MAAMrL,OAAQ,YAErC,GAuBL,EAfmB,SAAH,GAIS,IAHvBE,EAAO,EAAPA,QACAmN,EAAY,EAAZA,aAAa,EAAD,EACZC,UAAAA,OAAS,OAAO,EAEhB,OACE,UAAC,WAAc,WACZA,IAAa,mBACd,SAAC,IAAU,CAAC2H,UAAU,IAAIlP,QAAQ,QAAQ1F,UAAWH,EAAQ8U,WAAW,SACrE3H,MAIT,G,4BC/BI6H,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,wCACD,OACJN,EAAQ,EAAUG,C,oJCVZI,EAAY,CAAC,YAAa,YAAa,UAAW,UAAW,YAgBnE,SAASC,EAAazV,EAAU+T,GAC9B,IAAM2B,EAAgBC,EAAAA,SAAAA,QAAuB3V,GAAU6F,OAAO+P,SAC9D,OAAOF,EAActQ,QAAO,SAACyQ,EAAQC,EAAOpR,GAO1C,OANAmR,EAAO3G,KAAK4G,GACRpR,EAAQgR,EAAcxT,OAAS,GACjC2T,EAAO3G,KAAmByG,EAAAA,aAAmB5B,EAAW,CACtDgC,IAAK,aAAF,OAAerR,MAGfmR,CACT,GAAG,GACL,CACA,IA+DMG,GAAYC,EAAAA,EAAAA,IAAO,MAAO,CAC9BtM,KAAM,WACNuM,KAAM,OACNC,kBAAmB,SAACC,EAAOC,GACzB,MAAO,CAACA,EAAOnX,KACjB,GALgB+W,EAvDG,SAAH,GAGZ,IAFJK,EAAU,EAAVA,WACAtX,EAAK,EAALA,MAEIqX,GAASE,EAAAA,EAAAA,GAAS,CACpBlS,QAAS,OACTmS,cAAe,WACdC,EAAAA,EAAAA,IAAkB,CACnBzX,MAAAA,IACC0X,EAAAA,EAAAA,IAAwB,CACzBC,OAAQL,EAAW5S,UACnBkT,YAAa5X,EAAM4X,YAAYD,UAC7B,SAAAE,GAAS,MAAK,CAChBL,cAAeK,EAChB,KACD,GAAIP,EAAWhJ,QAAS,CACtB,IAAMwJ,GAAcC,EAAAA,EAAAA,IAAmB/X,GACjCgY,EAAOC,OAAOC,KAAKlY,EAAM4X,YAAYD,QAAQvR,QAAO,SAACC,EAAK8R,GAI9D,OAHkC,kBAAvBb,EAAWhJ,SAA0D,MAAlCgJ,EAAWhJ,QAAQ6J,IAAuD,kBAAzBb,EAAW5S,WAA8D,MAApC4S,EAAW5S,UAAUyT,MACvJ9R,EAAI8R,IAAc,GAEb9R,CACT,GAAG,CAAC,GACE+R,GAAkBV,EAAAA,EAAAA,IAAwB,CAC9CC,OAAQL,EAAW5S,UACnBsT,KAAAA,IAEIK,GAAgBX,EAAAA,EAAAA,IAAwB,CAC5CC,OAAQL,EAAWhJ,QACnB0J,KAAAA,IAE6B,kBAApBI,GACTH,OAAOC,KAAKE,GAAiBE,SAAQ,SAACH,EAAYzS,EAAOkS,GAEvD,IADuBQ,EAAgBD,GAClB,CACnB,IAAMI,EAAyB7S,EAAQ,EAAI0S,EAAgBR,EAAYlS,EAAQ,IAAM,SACrF0S,EAAgBD,GAAcI,CAChC,CACF,IAUFlB,GAASmB,EAAAA,EAAAA,GAAUnB,GAAQI,EAAAA,EAAAA,IAAkB,CAC3CzX,MAAAA,GACCqY,GAVwB,SAACR,EAAWM,GACrC,MAAO,CACL,iCAAiC,QAC/B/X,OAAQ,GAAC,iBAnDUsE,EAoDYyT,EAAaC,EAAgBD,GAAcb,EAAW5S,UAnDtF,CACL+T,IAAK,OACL,cAAe,QACfC,OAAQ,MACR,iBAAkB,UAClBhU,MA8C0GiU,EAAAA,EAAAA,IAASb,EAAaD,KApDvG,IAAAnT,CAuDzB,IAIF,CAEA,OADA2S,GAASuB,EAAAA,EAAAA,IAAwB5Y,EAAM4X,YAAaP,EAEtD,IAQMhJ,EAAqBsI,EAAAA,YAAiB,SAAekC,EAASC,GAClE,IAAMC,GAAaC,EAAAA,EAAAA,GAAc,CAC/B5B,MAAOyB,EACPlO,KAAM,aAEFyM,GAAQ6B,EAAAA,EAAAA,GAAaF,GAC3B,EAMM3B,EALFtB,UAAAA,OAAS,IAAG,QAAK,IAKfsB,EAJF1S,UAAAA,OAAS,IAAG,WAAQ,IAIlB0S,EAHF9I,QAAAA,OAAO,IAAG,IAAC,EACX4K,EAEE9B,EAFF8B,QACAlY,EACEoW,EADFpW,SAEFmY,GAAQC,EAAAA,EAAAA,GAA8BhC,EAAOZ,GACzCc,EAAa,CACjB5S,UAAAA,EACA4J,QAAAA,GAEF,OAAoB+K,EAAAA,EAAAA,KAAKrC,GAAWO,EAAAA,EAAAA,GAAS,CAC3C+B,GAAIxD,EACJwB,WAAYA,EACZwB,IAAKA,GACJK,EAAO,CACRnY,SAAUkY,EAAUzC,EAAazV,EAAUkY,GAAWlY,IAE1D,IAmCA,K,wBCzJA,SAASuY,IAEP,IAAIhX,EAAQiX,KAAKC,YAAYC,yBAAyBF,KAAKpC,MAAOoC,KAAKjX,OACzD,OAAVA,QAA4BoX,IAAVpX,GACpBiX,KAAKI,SAASrX,EAElB,CAEA,SAASsX,EAA0BC,GAQjCN,KAAKI,SALL,SAAiBG,GACf,IAAIxX,EAAQiX,KAAKC,YAAYC,yBAAyBI,EAAWC,GACjE,OAAiB,OAAVxX,QAA4BoX,IAAVpX,EAAsBA,EAAQ,IACzD,EAEsByX,KAAKR,MAC7B,CAEA,SAASS,EAAoBH,EAAWI,GACtC,IACE,IAAIC,EAAYX,KAAKpC,MACjB2C,EAAYP,KAAKjX,MACrBiX,KAAKpC,MAAQ0C,EACbN,KAAKjX,MAAQ2X,EACbV,KAAKY,6BAA8B,EACnCZ,KAAKa,wBAA0Bb,KAAKc,wBAClCH,EACAJ,EAKJ,CAHE,QACAP,KAAKpC,MAAQ+C,EACbX,KAAKjX,MAAQwX,CACf,CACF,CAQA,SAASQ,EAASC,GAChB,IAAIC,EAAYD,EAAUC,UAE1B,IAAKA,IAAcA,EAAUC,iBAC3B,MAAM,IAAIC,MAAM,sCAGlB,GACgD,oBAAvCH,EAAUd,0BAC4B,oBAAtCe,EAAUH,wBAEjB,OAAOE,EAMT,IAAII,EAAqB,KACrBC,EAA4B,KAC5BC,EAAsB,KAgB1B,GAf4C,oBAAjCL,EAAUlB,mBACnBqB,EAAqB,qBACmC,oBAAxCH,EAAUM,4BAC1BH,EAAqB,6BAE4B,oBAAxCH,EAAUZ,0BACnBgB,EAA4B,4BACmC,oBAA/CJ,EAAUO,mCAC1BH,EAA4B,oCAEe,oBAAlCJ,EAAUR,oBACnBa,EAAsB,sBACmC,oBAAzCL,EAAUQ,6BAC1BH,EAAsB,8BAGC,OAAvBF,GAC8B,OAA9BC,GACwB,OAAxBC,EACA,CACA,IAAII,EAAgBV,EAAUW,aAAeX,EAAU7P,KACnDyQ,EAC4C,oBAAvCZ,EAAUd,yBACb,6BACA,4BAEN,MAAMiB,MACJ,2FACEO,EACA,SACAE,EACA,uDACwB,OAAvBR,EAA8B,OAASA,EAAqB,KAC9B,OAA9BC,EACG,OAASA,EACT,KACqB,OAAxBC,EAA+B,OAASA,EAAsB,IATjE,uIAaJ,CAaA,GARkD,oBAAvCN,EAAUd,2BACnBe,EAAUlB,mBAAqBA,EAC/BkB,EAAUZ,0BAA4BA,GAMS,oBAAtCY,EAAUH,wBAAwC,CAC3D,GAA4C,oBAAjCG,EAAUY,mBACnB,MAAM,IAAIV,MACR,qHAIJF,EAAUR,oBAAsBA,EAEhC,IAAIoB,EAAqBZ,EAAUY,mBAEnCZ,EAAUY,mBAAqB,SAC7BlB,EACAJ,EACAuB,GAUA,IAAIC,EAAW/B,KAAKY,4BAChBZ,KAAKa,wBACLiB,EAEJD,EAAmBG,KAAKhC,KAAMW,EAAWJ,EAAWwB,EACtD,CACF,CAEA,OAAOf,CACT,C,8CA9GAjB,EAAmBkC,8BAA+B,EAClD5B,EAA0B4B,8BAA+B,EACzDxB,EAAoBwB,8BAA+B,C","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx","screens/Console/Tenants/TenantDetails/UpdateTenantModal.tsx","screens/Console/Common/UsageBarWrapper/SummaryUsageBar.tsx","screens/Console/Tenants/TenantDetails/EditDomains.tsx","screens/Console/Tenants/TenantDetails/TenantSummary.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Lato, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n {children}\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","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 {label}\n \n \n {value}\n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n
\n );\n })}\n
\n );\n};\n\nexport default UsageBar;\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 { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"../../../../icons\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\"\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n \n \n
\n );\n }\n\n return (\n \n
\n \n
\n
\n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n
\n \n \n {plotValues.map((entry, index) => (\n | \n ))}\n \n \n
\n
\n );\n};\n\nexport default TenantCapacity;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IUpdateTenantModal {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n infoText: {\n fontSize: 14,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst UpdateTenantModal = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n classes,\n}: IUpdateTenantModal) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [minioImage, setMinioImage] = useState(\"\");\n const [imageRegistry, setImageRegistry] = useState(false);\n const [imageRegistryEndpoint, setImageRegistryEndpoint] =\n useState(\"\");\n const [imageRegistryUsername, setImageRegistryUsername] =\n useState(\"\");\n const [imageRegistryPassword, setImageRegistryPassword] =\n useState(\"\");\n const [validMinioImage, setValidMinioImage] = useState(true);\n\n const validateImage = useCallback(\n (fieldToCheck: string) => {\n const pattern = new RegExp(\"^$|^((.*?)/(.*?):(.+))$\");\n\n switch (fieldToCheck) {\n case \"minioImage\":\n setValidMinioImage(pattern.test(minioImage));\n break;\n }\n },\n [minioImage]\n );\n\n useEffect(() => {\n validateImage(\"minioImage\");\n }, [minioImage, validateImage]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setMinioImage(\"\");\n setImageRegistry(false);\n setImageRegistryEndpoint(\"\");\n setImageRegistryUsername(\"\");\n setImageRegistryPassword(\"\");\n };\n\n const updateMinIOImage = () => {\n setIsSending(true);\n\n let payload = {\n image: minioImage,\n enable_prometheus: true,\n };\n\n if (imageRegistry) {\n const registry: any = {\n image_registry: {\n registry: imageRegistryEndpoint,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n payload = {\n ...payload,\n ...registry,\n };\n }\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}`,\n payload\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Image updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n \n \n \n \n Please enter the MinIO image from dockerhub to use. If blank, then\n latest build will be used.\n
\n \n \n \n {\n setMinioImage(e.target.value);\n }}\n />\n \n \n ) => {\n setImageRegistry(!imageRegistry);\n }}\n label={\"Set Custom Image Registry\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n {imageRegistry && (\n \n \n {\n setImageRegistryEndpoint(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryUsername(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryPassword(e.target.value);\n }}\n />\n \n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(UpdateTenantModal);\n","import React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { LinearProgress, Stack } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n CapacityValues,\n ITenant,\n ValueUnit,\n} from \"../../Tenants/ListTenants/types\";\nimport { CircleIcon } from \"../../../../icons\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport Loader from \"../Loader/Loader\";\nimport TenantCapacity from \"../../Tenants/ListTenants/TenantCapacity\";\nimport ErrorBlock from \"../../../shared/ErrorBlock\";\nimport LabelValuePair from \"./LabelValuePair\";\n\ninterface ISummaryUsageBar {\n tenant: ITenant;\n label: string;\n error: string;\n loading: boolean;\n classes: any;\n labels?: boolean;\n healthStatus?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n centerItem: {\n textAlign: \"center\",\n },\n });\n\nexport const BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 10,\n borderRadius: 5,\n },\n colorPrimary: {\n backgroundColor: \"#F4F4F4\",\n },\n bar: {\n borderRadius: 5,\n backgroundColor: \"#081C42\",\n },\n padChart: {\n padding: \"5px\",\n },\n}))(LinearProgress);\n\nconst SummaryUsageBar = ({\n classes,\n tenant,\n healthStatus,\n loading,\n error,\n}: ISummaryUsageBar) => {\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.status?.usage?.raw) {\n const b = niceBytes(`${tenant.status.usage.raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity) {\n const b = niceBytes(`${tenant.status.usage.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity_usage) {\n const b = niceBytesInt(tenant.status.usage.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.status?.usage?.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers.map((itemTenant) => {\n return { value: itemTenant.size, variant: itemTenant.name };\n });\n let internalUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const renderComponent = () => {\n if (!loading) {\n return error !== \"\" ? (\n \n ) : (\n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n \n )}\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n \n )}\n {healthStatus && (\n \n \n \n }\n />\n )}\n \n \n );\n }\n\n return null;\n };\n\n return (\n \n {loading && (\n \n \n \n \n
\n )}\n {renderComponent()}\n \n );\n};\n\nexport default withStyles(styles)(SummaryUsageBar);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IDomainsRequest,\n} from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport api from \"../../../../common/api\";\nimport RemoveIcon from \"../../../../icons/RemoveIcon\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IEditDomains {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n domains: IDomainsRequest | null;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n domainInline: {\n display: \"flex\",\n marginBottom: 15,\n },\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n width: 15,\n height: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst EditDomains = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n domains,\n classes,\n}: IEditDomains) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [consoleDomain, setConsoleDomain] = useState(\"\");\n const [minioDomains, setMinioDomains] = useState([\"\"]);\n const [consoleDomainValid, setConsoleDomainValid] = useState(true);\n const [minioDomainValid, setMinioDomainValid] = useState([true]);\n\n useEffect(() => {\n if (domains) {\n const consoleDomainSet = domains.console || \"\";\n setConsoleDomain(consoleDomainSet);\n\n if (consoleDomainSet !== \"\") {\n // We Validate console domain\n const consoleRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/\n );\n\n setConsoleDomainValid(consoleRegExp.test(consoleDomainSet));\n } else {\n setConsoleDomainValid(true);\n }\n\n if (domains.minio && domains.minio.length > 0) {\n setMinioDomains(domains.minio);\n\n const minioRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/\n );\n\n const initialValidations = domains.minio.map((domain) => {\n if (domain.trim() !== \"\") {\n return minioRegExp.test(domain);\n } else {\n return true;\n }\n });\n\n setMinioDomainValid(initialValidations);\n }\n }\n }, [domains]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setConsoleDomain(\"\");\n setConsoleDomainValid(true);\n setMinioDomains([\"\"]);\n setMinioDomainValid([true]);\n };\n\n const updateDomainsList = () => {\n setIsSending(true);\n\n let payload = {\n domains: {\n console: consoleDomain,\n minio: minioDomains.filter((minioDomain) => minioDomain.trim() !== \"\"),\n },\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}/domains`,\n payload\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Domains updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setIsSending(false);\n dispatch(setModalErrorSnackMessage(error));\n });\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const cloneDomains = [...minioDomains];\n cloneDomains[index] = value;\n\n setMinioDomains(cloneDomains);\n };\n\n const addNewMinIODomain = () => {\n const cloneDomains = [...minioDomains];\n const cloneValidations = [...minioDomainValid];\n\n cloneDomains.push(\"\");\n cloneValidations.push(true);\n\n setMinioDomains(cloneDomains);\n setMinioDomainValid(cloneValidations);\n };\n\n const removeMinIODomain = (removeIndex: number) => {\n const filteredDomains = minioDomains.filter(\n (_, index) => index !== removeIndex\n );\n\n const filterValidations = minioDomainValid.filter(\n (_, index) => index !== removeIndex\n );\n\n setMinioDomains(filteredDomains);\n setMinioDomainValid(filterValidations);\n };\n\n const setMinioDomainValidation = (domainValid: boolean, index: number) => {\n const cloneValidation = [...minioDomainValid];\n cloneValidation[index] = domainValid;\n\n setMinioDomainValid(cloneValidation);\n };\n return (\n \n \n \n \n \n ) => {\n setConsoleDomain(e.target.value);\n\n setConsoleDomainValid(e.target.validity.valid);\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n error={\n !consoleDomainValid\n ? \"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)\"\n : \"\"\n }\n />\n
\n \n
MinIO Domains \n
\n {minioDomains.map((domain, index) => {\n return (\n
\n
) => {\n updateMinIODomain(e.target.value, index);\n setMinioDomainValidation(\n e.target.validity.valid,\n index\n );\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?$\"\n }\n error={\n !minioDomainValid[index]\n ? \"MinIO domain format is incorrect (http|https://subdomain.domain)\"\n : \"\"\n }\n />\n \n\n \n removeMinIODomain(index)}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n \n );\n })}\n
\n
\n \n \n \n !domain).length > 0\n }\n onClick={updateDomainsList}\n label={\"Save\"}\n />\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(EditDomains);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Box, Grid } from \"@mui/material\";\nimport UpdateTenantModal from \"./UpdateTenantModal\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SummaryUsageBar from \"../../Common/UsageBarWrapper/SummaryUsageBar\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport SectionTitle from \"../../Common/SectionTitle\";\nimport { Button } from \"mds\";\nimport { EditIcon } from \"../../../../icons\";\nimport EditDomains from \"./EditDomains\";\nimport { ITenant } from \"../ListTenants/types\";\nimport { useParams } from \"react-router-dom\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\n\ninterface ITenantsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n detailSection: {\n \"& div\": {\n \"& b,i\": {\n minWidth: 80,\n display: \"block\",\n float: \"left\",\n },\n \"& i\": {\n fontStyle: \"normal\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n },\n \"& div\": {\n clear: \"both\",\n },\n clear: \"both\",\n marginBottom: 2,\n },\n },\n linkedSection: {\n color: theme.palette.info.main,\n fontFamily: \"'Lato', sans-serif\",\n },\n autoGeneratedLink: {\n fontStyle: \"italic\",\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst healthStatusToClass = (health_status: string = \"red\", classes: any) => {\n return health_status === \"red\"\n ? classes.redState\n : health_status === \"yellow\"\n ? classes.yellowState\n : health_status === \"green\"\n ? classes.greenState\n : classes.greyState;\n};\n\nconst StorageSummary = ({\n tenant,\n classes,\n}: {\n tenant: ITenant | null;\n classes: any;\n}) => {\n if (!tenant) {\n return null;\n }\n\n return (\n \n );\n};\n\nconst getToggle = (toggleValue: boolean, idPrefix = \"\") => {\n return (\n {}}\n switchOnly\n />\n );\n};\n\nconst featureRowStyle = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginTop: \"10px\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n};\n\nconst featureItemStyleProps = {\n stkProps: {\n sx: {\n flex: 1,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"@media (max-width: 900px)\": {\n marginRight: \"25px\",\n },\n },\n },\n lblProps: {\n style: {\n minWidth: 100,\n },\n },\n};\nconst TenantSummary = ({ classes }: ITenantsSummary) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const logEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"logEnabled\", false)\n );\n const monitoringEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"monitoringEnabled\", false)\n );\n const encryptionEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"encryptionEnabled\", false)\n );\n const minioTLS = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"minioTLS\", false)\n );\n const adEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpAdEnabled\", false)\n );\n const oidcEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpOidcEnabled\", false)\n );\n\n const [poolCount, setPoolCount] = useState(0);\n const [instances, setInstances] = useState(0);\n const [volumes, setVolumes] = useState(0);\n const [updateMinioVersion, setUpdateMinioVersion] = useState(false);\n const [editDomainsOpen, setEditDomainsOpen] = useState(false);\n\n useEffect(() => {\n if (tenant) {\n setPoolCount(tenant.pools.length);\n setVolumes(tenant.total_volumes || 0);\n setInstances(tenant.total_instances || 0);\n }\n }, [tenant]);\n\n const closeEditDomainsModal = (refresh: boolean) => {\n setEditDomainsOpen(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n };\n\n return (\n \n {updateMinioVersion && (\n {\n setUpdateMinioVersion(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n }}\n idTenant={tenantName || \"\"}\n namespace={tenantNamespace || \"\"}\n />\n )}\n\n {editDomainsOpen && (\n \n )}\n\n Details \n\n \n\n \n \n \n \n \n \n {\n setUpdateMinioVersion(true);\n }}\n >\n {tenant ? tenant.image : \"\"}\n \n }\n />\n \n \n \n Domains\n }\n onClick={() => {\n setEditDomainsOpen(true);\n }}\n />\n \n \n \n \n {(!tenant?.domains?.console ||\n tenant?.domains?.console === \"\") &&\n !tenant?.endpoints?.console\n ? \"-\"\n : \"\"}\n\n {tenant?.endpoints?.console && (\n \n \n {tenant?.endpoints?.console || \"-\"}\n \n \n \n )}\n\n {tenant?.domains?.console && tenant?.domains?.console !== \"\" && (\n \n {tenant?.domains?.console || \"\"}\n \n )}\n \n }\n />\n \n \n \n {!tenant?.domains?.minio && !tenant?.endpoints?.minio\n ? \"-\"\n : \"\"}\n {tenant?.endpoints?.minio && (\n \n \n {tenant?.endpoints?.minio || \"-\"}\n \n \n \n )}\n\n {tenant?.domains?.minio &&\n tenant.domains.minio.map((domain) => {\n return (\n \n \n {domain}\n \n \n \n );\n })}\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n Features \n \n \n\n \n \n \n \n \n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(TenantSummary);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\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;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { createUnarySpacing, getValue, handleBreakpoints, mergeBreakpointsInOrder, unstable_extendSxProp as extendSxProp, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { deepmerge } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\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 */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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 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};\nconst StackRoot = styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root];\n }\n})(style);\nconst Stack = /*#__PURE__*/React.forwardRef(function Stack(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiStack'\n });\n const props = extendSxProp(themeProps);\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing\n };\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: divider ? joinChildren(children, divider) : children\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} : void 0;\nexport default Stack;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","classes","children","rest","className","deleteDialogStyles","content","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","onClose","modalOpen","title","wideLimit","noContentPadding","titleIcon","dispatch","useAppDispatch","useState","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","type","customSize","paper","fullWidth","detailedErrorMsg","length","open","scroll","event","reason","titleText","closeContainer","id","closeButton","onClick","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","label","value","orientation","stkProps","lblProps","valProps","direction","xs","sm","style","marginRight","fontWeight","totalValue","sizeItems","bgColor","height","borderRadius","display","transitionDuration","overflow","map","sizeElement","index","itemPercentage","toString","totalCapacity","usedSpaceVariants","statusClass","render","colors","BGColor","totalUsedSpace","reduce","acc","currValue","emptySpace","tiersList","standardTier","find","tier","variant","filter","standardTierColor","usedPercentage","plotValues","plotValuesForUsageBar","plotVal","itemName","marginBottom","position","right","top","zIndex","left","transform","isNaN","niceBytesInt","PieChart","Pie","data","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell","infoText","formFieldStyles","modalStyleUtils","closeModalAndRefresh","namespace","idTenant","isSending","setIsSending","minioImage","setMinioImage","imageRegistry","setImageRegistry","imageRegistryEndpoint","setImageRegistryEndpoint","imageRegistryUsername","setImageRegistryUsername","imageRegistryPassword","setImageRegistryPassword","validMinioImage","setValidMinioImage","validateImage","useCallback","fieldToCheck","pattern","RegExp","test","ModalWrapper","Grid","container","item","modalFormScrollable","formFieldRow","InputBoxWrapper","name","placeholder","onChange","e","target","FormSwitchWrapper","checked","indicatorLabels","Fragment","modalButtonBar","disabled","trim","payload","image","enable_prometheus","registry","image_registry","username","password","api","then","setSnackBarMessage","catch","error","setModalErrorSnackMessage","colorPrimary","bar","padChart","LinearProgress","centerItem","textAlign","tenant","healthStatus","loading","raw","unit","capacity","used","localUse","tieredUse","status","usage","parts","niceBytes","split","capacity_usage","spaceVariants","tiers","itemTenant","internalUsage","sum","tieredUsage","partsInternal","Loader","ErrorBlock","errorMessage","withBreak","TenantCapacity","Stack","spacing","md","alignItems","LabelValuePair","renderComponent","domainInline","overlayAction","marginLeft","background","domains","consoleDomain","setConsoleDomain","minioDomains","setMinioDomains","consoleDomainValid","setConsoleDomainValid","minioDomainValid","setMinioDomainValid","consoleDomainSet","console","consoleRegExp","minio","minioRegExp","initialValidations","domain","addNewMinIODomain","cloneDomains","cloneValidations","push","configSectionItem","containerItem","validity","valid","updateMinIODomain","domainValid","cloneValidation","setMinioDomainValidation","IconButton","Add","removeIndex","filteredDomains","_","filterValidations","removeMinIODomain","RemoveIcon","minioDomain","healthStatusToClass","health_status","redState","yellowState","greenState","greyState","StorageSummary","getToggle","toggleValue","idPrefix","switchOnly","featureRowStyle","justifyContent","marginTop","flexFlow","featureItemStyleProps","sx","flex","minWidth","tenantDetailsStyles","warning","success","detailSection","float","fontStyle","wordWrap","overflowWrap","clear","linkedSection","autoGeneratedLink","containerForHeader","useParams","tenantName","tenantNamespace","tenants","tenantInfo","logEnabled","get","monitoringEnabled","encryptionEnabled","minioTLS","adEnabled","oidcEnabled","poolCount","setPoolCount","instances","setInstances","volumes","setVolumes","updateMinioVersion","setUpdateMinioVersion","editDomainsOpen","setEditDomainsOpen","pools","total_volumes","total_instances","refresh","getTenantAsync","SectionTitle","separator","currentState","AButton","textOverflow","whiteSpace","wordBreak","icon","endpoints","href","rel","write_quorum","drives_online","drives_offline","Box","errorBlock","component","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","_excluded","joinChildren","childrenArray","React","Boolean","output","child","key","StackRoot","styled","slot","overridesResolver","props","styles","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","transformer","createUnarySpacing","base","Object","keys","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","deepmerge","row","column","getValue","mergeBreakpointsInOrder","inProps","ref","themeProps","useThemeProps","extendSxProp","divider","other","_objectWithoutPropertiesLoose","_jsx","as","componentWillMount","this","constructor","getDerivedStateFromProps","undefined","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","prototype","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1030.39fd7796.chunk.js b/portal-ui/build/static/js/1030.39fd7796.chunk.js
new file mode 100644
index 000000000..0c2c136c1
--- /dev/null
+++ b/portal-ui/build/static/js/1030.39fd7796.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1030],{81806:function(e,n,t){var i=t(1413),a=t(45987),o=(t(72791),t(11135)),l=t(25787),r=t(80184),s=["classes","children"];n.Z=(0,l.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,border:0,backgroundColor:"transparent",textDecoration:"underline",cursor:"pointer",fontSize:"inherit",color:e.palette.info.main,fontFamily:"Lato, sans-serif"}})}))((function(e){var n=e.classes,t=e.children,o=(0,a.Z)(e,s);return(0,r.jsx)("button",(0,i.Z)((0,i.Z)({},o),{},{className:n.root,children:t}))}))},56028:function(e,n,t){var i=t(29439),a=t(1413),o=t(72791),l=t(78687),r=t(13400),s=t(55646),c=t(5574),d=t(65661),u=t(39157),m=t(11135),v=t(25787),p=t(23814),h=t(25469),f=t(29823),g=t(28057),x=t(87995),Z=t(80184);n.Z=(0,v.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)({},p.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},p.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,v=e.children,p=e.classes,j=e.wideLimit,b=void 0===j||j,y=e.noContentPadding,S=e.titleIcon,w=void 0===S?null:S,k=(0,h.TL)(),P=(0,o.useState)(!1),C=(0,i.Z)(P,2),R=C[0],N=C[1],I=(0,l.v9)((function(e){return e.system.modalSnackBar}));(0,o.useEffect)((function(){k((0,x.MK)(""))}),[k]),(0,o.useEffect)((function(){if(I){if(""===I.message)return void N(!1);"error"!==I.type&&N(!0)}}),[I]);var D=b?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return I&&(E=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(E=I.message)),(0,Z.jsxs)(c.Z,(0,a.Z)((0,a.Z)({open:t,classes:p},D),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,Z.jsxs)(d.Z,{className:p.title,children:[(0,Z.jsxs)("div",{className:p.titleText,children:[w," ",m]}),(0,Z.jsx)("div",{className:p.closeContainer,children:(0,Z.jsx)(r.Z,{"aria-label":"close",id:"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,Z.jsx)(f.Z,{})})})]}),(0,Z.jsx)(g.Z,{isModal:!0}),(0,Z.jsx)(s.Z,{open:R,className:p.snackBarModal,onClose:function(){N(!1),k((0,x.MK)(""))},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(I&&"error"===I.type?p.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,Z.jsx)(u.Z,{className:y?"":p.content,children:v})]}))}))},45902:function(e,n,t){var i=t(1413),a=(t(72791),t(53767)),o=t(80184);n.Z=function(e){var n=e.label,t=void 0===n?null:n,l=e.value,r=void 0===l?"-":l,s=e.orientation,c=void 0===s?"column":s,d=e.stkProps,u=void 0===d?{}:d,m=e.lblProps,v=void 0===m?{}:m,p=e.valProps,h=void 0===p?{}:p;return(0,o.jsxs)(a.Z,(0,i.Z)((0,i.Z)({direction:{xs:"column",sm:c}},u),{},{children:[(0,o.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:600}},v),{},{children:t})),(0,o.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:500}},h),{},{children:r}))]}))}},74815:function(e,n,t){t.d(n,{Z:function(){return u}});var i=t(93433),a=(t(72791),t(73909)),o=t(21041),l=t(41048),r=t(45248),s=t(75952),c=t(80184),d=function(e){var n=e.totalValue,t=e.sizeItems,i=e.bgColor,a=void 0===i?"#ededed":i;return(0,c.jsx)("div",{style:{width:"100%",height:12,backgroundColor:a,borderRadius:30,display:"flex",transitionDuration:"0.3s",overflow:"hidden"},children:t.map((function(e,t){var i=100*e.value/n;return(0,c.jsx)("div",{style:{width:"".concat(i,"%"),height:"100%",backgroundColor:e.color,transitionDuration:"0.3s"}},"itemSize-".concat(t.toString()))}))})},u=function(e){var n=e.totalCapacity,t=e.usedSpaceVariants,u=e.statusClass,m=e.render,v=void 0===m?"pie":m,p=["#8dacd3","#bca1ea","#92e8d2","#efc9ac","#97f274","#f7d291","#71ACCB","#f28282","#e28cc1","#2781B0"],h="#ededed",f=t.reduce((function(e,n){return e+n.value}),0),g=n-f,x=[],Z=t.find((function(e){return"STANDARD"===e.variant}))||{value:0,variant:"empty"};t.length>10?x=[{value:f-Z.value,color:"#2781B0",label:"Total Tiers Space"}]:x=t.filter((function(e){return"STANDARD"!==e.variant})).map((function(e,n){return{value:e.value,color:p[n],label:"Tier - ".concat(e.variant)}}));var j="#07193E",b=100*Z.value/n;b>=90?j="#C83B51":b>=75&&(j="#FFAB0F");var y=[{value:Z.value,color:j,label:"Used Space by Tenant"}].concat((0,i.Z)(x),[{value:g,color:"bar"===v?h:"transparent",label:"Empty Space"}]);if("bar"===v){var S=y.map((function(e){return{value:e.value,color:e.color,itemName:e.label}}));return(0,c.jsx)("div",{style:{width:"100%",marginBottom:15},children:(0,c.jsx)(d,{totalValue:n,sizeItems:S,bgColor:h})})}return(0,c.jsxs)("div",{style:{position:"relative",width:110,height:110},children:[(0,c.jsx)("div",{style:{position:"absolute",right:-5,top:15,zIndex:400},className:u,children:(0,c.jsx)(s.J$M,{style:{border:"#fff 2px solid",borderRadius:"100%",width:20,height:20}})}),(0,c.jsx)("span",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",color:"#000",fontSize:12},children:isNaN(f)?"N/A":(0,r.l5)(f)}),(0,c.jsx)("div",{children:(0,c.jsxs)(a.u,{width:110,height:110,children:[(0,c.jsx)(o.b,{data:[{value:100}],cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,fill:h,isAnimationActive:!1,stroke:"none"}),(0,c.jsx)(o.b,{data:y,cx:"50%",cy:"50%",dataKey:"value",outerRadius:50,innerRadius:40,children:y.map((function(e,n){return(0,c.jsx)(l.b,{fill:e.color,stroke:"none"},"cellCapacity-".concat(n))}))})]})})]})}},21353:function(e,n,t){t.r(n),t.d(n,{default:function(){return O}});var i=t(29439),a=t(1413),o=t(72791),l=t(78687),r=t(26181),s=t.n(r),c=t(11135),d=t(25787),u=t(23814),m=t(61889),v=t(64554),p=t(75952),h=t(56028),f=t(21435),g=t(37516),x=t(81207),Z=t(87995),j=t(25469),b=t(80184),y=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({infoText:{fontSize:14}},u.DF),u.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,l=e.namespace,r=e.idTenant,s=e.classes,c=(0,j.TL)(),d=(0,o.useState)(!1),u=(0,i.Z)(d,2),v=u[0],y=u[1],S=(0,o.useState)(""),w=(0,i.Z)(S,2),k=w[0],P=w[1],C=(0,o.useState)(!1),R=(0,i.Z)(C,2),N=R[0],I=R[1],D=(0,o.useState)(""),E=(0,i.Z)(D,2),F=E[0],A=E[1],_=(0,o.useState)(""),B=(0,i.Z)(_,2),M=B[0],z=B[1],T=(0,o.useState)(""),U=(0,i.Z)(T,2),W=U[0],L=U[1],O=(0,o.useState)(!0),$=(0,i.Z)(O,2),V=$[0],H=$[1],K=(0,o.useCallback)((function(e){var n=new RegExp("^$|^((.*?)/(.*?):(.+))$");if("minioImage"===e)H(n.test(k))}),[k]);(0,o.useEffect)((function(){K("minioImage")}),[k,K]);return(0,b.jsx)(h.Z,{title:"Update MinIO Version",modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalFormScrollable,children:[(0,b.jsx)("div",{className:s.infoText,children:"Please enter the MinIO image from dockerhub to use. If blank, then latest build will be used."}),(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:k,label:"MinIO's Image",id:"minioImage",name:"minioImage",placeholder:"E.g. minio/minio:RELEASE.2022-02-26T02-54-46Z",onChange:function(e){P(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(g.Z,{value:"imageRegistry",id:"setImageRegistry",name:"setImageRegistry",checked:N,onChange:function(e){I(!N)},label:"Set Custom Image Registry",indicatorLabels:["Yes","No"]})}),N&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:F,label:"Endpoint",id:"imageRegistry",name:"imageRegistry",placeholder:"E.g. https://index.docker.io/v1/",onChange:function(e){A(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:M,label:"Username",id:"imageRegistryUsername",name:"imageRegistryUsername",placeholder:"Enter image registry username",onChange:function(e){z(e.target.value)}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.formFieldRow,children:(0,b.jsx)(f.Z,{value:W,label:"Password",id:"imageRegistryPassword",name:"imageRegistryPassword",placeholder:"Enter image registry password",onChange:function(e){L(e.target.value)}})})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalButtonBar,children:[(0,b.jsx)(p.zxk,{id:"clear",variant:"regular",onClick:function(){P(""),I(!1),A(""),z(""),L("")},label:"Clear"}),(0,b.jsx)(p.zxk,{id:"save-tenant",type:"submit",variant:"callAction",disabled:!V||N&&(""===F.trim()||""===M.trim()||""===W.trim())||v,onClick:function(){y(!0);var e={image:k,enable_prometheus:!0};if(N){var n={image_registry:{registry:F,username:M,password:W}};e=(0,a.Z)((0,a.Z)({},e),n)}x.Z.invoke("PUT","/api/v1/namespaces/".concat(l,"/tenants/").concat(r),e).then((function(){y(!1),c((0,Z.y1)("Image updated successfully")),t(!0)})).catch((function(e){c((0,Z.zb)(e)),y(!1)}))},label:"Save"})]})]})})})),S=t(81806),w=t(40986),k=t(53767),P=t(45248),C=t(74815),R=t(22512),N=t(45902),I=((0,d.Z)((function(e){return{root:{height:10,borderRadius:5},colorPrimary:{backgroundColor:"#F4F4F4"},bar:{borderRadius:5,backgroundColor:"#081C42"},padChart:{padding:"5px"}}}))(w.Z),(0,d.Z)((function(e){return(0,c.Z)({centerItem:{textAlign:"center"}})}))((function(e){var n,t,i,a,l,r,s=e.classes,c=e.tenant,d=e.healthStatus,u=e.loading,v=e.error,h={value:"n/a",unit:""},f={value:"n/a",unit:""},g={value:"n/a",unit:""},x={value:"n/a",unit:""},Z={value:"n/a",unit:""};if(null!==(n=c.status)&&void 0!==n&&null!==(t=n.usage)&&void 0!==t&&t.raw){var j=(0,P.ae)("".concat(c.status.usage.raw),!0).split(" ");h.value=j[0],h.unit=j[1]}if(null!==(i=c.status)&&void 0!==i&&null!==(a=i.usage)&&void 0!==a&&a.capacity){var y=(0,P.ae)("".concat(c.status.usage.capacity),!0).split(" ");f.value=y[0],f.unit=y[1]}if(null!==(l=c.status)&&void 0!==l&&null!==(r=l.usage)&&void 0!==r&&r.capacity_usage){var S=(0,P.l5)(c.status.usage.capacity_usage,!0).split(" ");g.value=S[0],g.unit=S[1]}var w=[];if(c.tiers&&0!==c.tiers.length){w=c.tiers.map((function(e){return{value:e.size,variant:e.name}}));var I=c.tiers.filter((function(e){return"internal"===e.type})).reduce((function(e,n){return e+n.size}),0),D=c.tiers.filter((function(e){return"internal"!==e.type})).reduce((function(e,n){return e+n.size}),0),E=(0,P.l5)(D,!0).split(" ");Z.value=E[0],Z.unit=E[1];var F=(0,P.l5)(I,!0).split(" ");x.value=F[0],x.unit=F[1]}else{var A,_;w=[{value:(null===(A=c.status)||void 0===A||null===(_=A.usage)||void 0===_?void 0:_.capacity_usage)||0,variant:"STANDARD"}]}return(0,b.jsxs)(o.Fragment,{children:[u&&(0,b.jsx)("div",{className:s.padChart,children:(0,b.jsx)(m.ZP,{item:!0,xs:12,className:s.centerItem,children:(0,b.jsx)(p.aNw,{style:{width:40,height:40}})})}),function(){var e,n;return u?null:""!==v?(0,b.jsx)(R.Z,{errorMessage:v,withBreak:!1}):(0,b.jsxs)(m.ZP,{item:!0,xs:12,children:[(0,b.jsx)(C.Z,{totalCapacity:(null===(e=c.status)||void 0===e||null===(n=e.usage)||void 0===n?void 0:n.raw)||0,usedSpaceVariants:w,statusClass:"",render:"bar"}),(0,b.jsxs)(k.Z,{direction:{xs:"column",sm:"row"},spacing:{xs:1,sm:2,md:4},alignItems:"stretch",margin:"0 0 15px 0",children:[(!c.tiers||0===c.tiers.length)&&(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(N.Z,{label:"Internal:",orientation:"row",value:"".concat(g.value," ").concat(g.unit)})}),c.tiers&&c.tiers.length>0&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)(N.Z,{label:"Internal:",orientation:"row",value:"".concat(x.value," ").concat(x.unit)}),(0,b.jsx)(N.Z,{label:"Tiered:",orientation:"row",value:"".concat(Z.value," ").concat(Z.unit)})]}),d&&(0,b.jsx)(N.Z,{orientation:"row",label:"Health:",value:(0,b.jsx)("span",{className:d,children:(0,b.jsx)(p.J$M,{})})})]})]})}()]})}))),D=t(50896),E=t(93433),F=t(13400),A=t(42419),_=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({domainInline:{display:"flex",marginBottom:15},overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{width:15,height:15},"& button":{background:"#EAEAEA"}}},u.DF),u.ID))}))((function(e){var n=e.open,t=e.closeModalAndRefresh,a=e.namespace,l=e.idTenant,r=e.domains,s=e.classes,c=(0,j.TL)(),d=(0,o.useState)(!1),u=(0,i.Z)(d,2),v=u[0],g=u[1],y=(0,o.useState)(""),S=(0,i.Z)(y,2),w=S[0],k=S[1],P=(0,o.useState)([""]),C=(0,i.Z)(P,2),R=C[0],N=C[1],I=(0,o.useState)(!0),D=(0,i.Z)(I,2),_=D[0],B=D[1],M=(0,o.useState)([!0]),z=(0,i.Z)(M,2),T=z[0],U=z[1];(0,o.useEffect)((function(){if(r){var e=r.console||"";if(k(e),""!==e){var n=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/);B(n.test(e))}else B(!0);if(r.minio&&r.minio.length>0){N(r.minio);var t=new RegExp(/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/),i=r.minio.map((function(e){return""===e.trim()||t.test(e)}));U(i)}}}),[r]);var W=function(){var e=(0,E.Z)(R),n=(0,E.Z)(T);e.push(""),n.push(!0),N(e),U(n)};return(0,b.jsx)(h.Z,{title:"Edit Tenant Domains - ".concat(l),modalOpen:n,onClose:function(){t(!1)},children:(0,b.jsx)(m.ZP,{container:!0,children:(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalFormScrollable,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:"".concat(s.configSectionItem),children:[(0,b.jsx)("div",{className:s.containerItem,children:(0,b.jsx)(f.Z,{id:"console_domain",name:"console_domain",onChange:function(e){k(e.target.value),B(e.target.validity.valid)},label:"Console Domain",value:w,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",error:_?"":"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{children:"MinIO Domains"}),(0,b.jsx)("div",{children:R.map((function(e,n){return(0,b.jsxs)("div",{className:"".concat(s.domainInline),children:[(0,b.jsx)(f.Z,{id:"minio-domain-".concat(n.toString()),name:"minio-domain-".concat(n.toString()),onChange:function(e){!function(e,n){var t=(0,E.Z)(R);t[n]=e,N(t)}(e.target.value,n),function(e,n){var t=(0,E.Z)(T);t[n]=e,U(t)}(e.target.validity.valid,n)},label:"MinIO Domain ".concat(n+1),value:e,placeholder:"Eg. http://subdomain.domain",pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$",error:T[n]?"":"MinIO domain format is incorrect (http|https://subdomain.domain)"}),(0,b.jsx)("div",{className:s.overlayAction,children:(0,b.jsx)(F.Z,{size:"small",onClick:W,disabled:n!==R.length-1,children:(0,b.jsx)(A.Z,{})})}),(0,b.jsx)("div",{className:s.overlayAction,children:(0,b.jsx)(F.Z,{size:"small",onClick:function(){return function(e){var n=R.filter((function(n,t){return t!==e})),t=T.filter((function(n,t){return t!==e}));N(n),U(t)}(n)},disabled:R.length<=1,children:(0,b.jsx)(p.HFL,{})})})]},"minio-domain-key-".concat(n.toString()))}))})]})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,className:s.modalButtonBar,children:[(0,b.jsx)(p.zxk,{id:"clear-edit-domain",type:"button",variant:"regular",onClick:function(){k(""),B(!0),N([""]),U([!0])},label:"Clear"}),(0,b.jsx)(p.zxk,{id:"save-domain",type:"submit",variant:"callAction",disabled:v||!_||T.filter((function(e){return!e})).length>0,onClick:function(){g(!0);var e={domains:{console:w,minio:R.filter((function(e){return""!==e.trim()}))}};x.Z.invoke("PUT","/api/v1/namespaces/".concat(a,"/tenants/").concat(l,"/domains"),e).then((function(){g(!1),c((0,Z.y1)("Domains updated successfully")),t(!0)})).catch((function(e){g(!1),c((0,Z.zb)(e))}))},label:"Save"})]})]})})})})),B=t(57689),M=t(82295),z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"red",n=arguments.length>1?arguments[1]:void 0;return"red"===e?n.redState:"yellow"===e?n.yellowState:"green"===e?n.greenState:n.greyState},T=function(e){var n,t=e.tenant,i=e.classes;return t?(0,b.jsx)(I,{tenant:t,label:"Storage",error:"",loading:!1,healthStatus:z(null===t||void 0===t||null===(n=t.status)||void 0===n?void 0:n.health_status,i)}):null},U=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(0,b.jsx)(g.Z,{indicatorLabels:["Enabled","Disabled"],checked:e,value:e,id:"".concat(n,"-status"),name:"".concat(n,"-status"),onChange:function(){},switchOnly:!0})},W={display:"flex",justifyContent:"space-between",marginTop:"10px","@media (max-width: 600px)":{flexFlow:"column"}},L={stkProps:{sx:{flex:1,marginRight:10,display:"flex",alignItems:"center",justifyContent:"space-between","@media (max-width: 900px)":{marginRight:"25px"}}},lblProps:{style:{minWidth:100}}},O=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({},u.oZ),{},{redState:{color:e.palette.error.main,"& .min-icon":{width:16,height:16,marginRight:4}},yellowState:{color:e.palette.warning.main,"& .min-icon":{width:16,height:16,marginRight:4}},greenState:{color:e.palette.success.main,"& .min-icon":{width:16,height:16,marginRight:4}},greyState:{color:"grey","& .min-icon":{width:16,height:16,marginRight:4}},detailSection:{"& div":{"& b,i":{minWidth:80,display:"block",float:"left"},"& i":{fontStyle:"normal",wordWrap:"break-word",overflowWrap:"break-word"},"& div":{clear:"both"},clear:"both",marginBottom:2}},linkedSection:{color:e.palette.info.main,fontFamily:"'Lato', sans-serif"},autoGeneratedLink:{fontStyle:"italic"}},(0,u.Bz)(e.spacing(4))))}))((function(e){var n,t,r,c,d,u,h,f,g,x,Z,w,k,P,C,R,I,E,F,A,z,O,$,V,H=e.classes,K=(0,j.TL)(),G=(0,B.UO)(),q=G.tenantName,J=G.tenantNamespace,Q=(0,l.v9)((function(e){return e.tenants.tenantInfo})),Y=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"logEnabled",!1)})),X=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"monitoringEnabled",!1)})),ee=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"encryptionEnabled",!1)})),ne=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"minioTLS",!1)})),te=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"idpAdEnabled",!1)})),ie=(0,l.v9)((function(e){return s()(e.tenants.tenantInfo,"idpOidcEnabled",!1)})),ae=(0,o.useState)(0),oe=(0,i.Z)(ae,2),le=oe[0],re=oe[1],se=(0,o.useState)(0),ce=(0,i.Z)(se,2),de=ce[0],ue=ce[1],me=(0,o.useState)(0),ve=(0,i.Z)(me,2),pe=ve[0],he=ve[1],fe=(0,o.useState)(!1),ge=(0,i.Z)(fe,2),xe=ge[0],Ze=ge[1],je=(0,o.useState)(!1),be=(0,i.Z)(je,2),ye=be[0],Se=be[1];(0,o.useEffect)((function(){Q&&(re(Q.pools.length),he(Q.total_volumes||0),ue(Q.total_instances||0))}),[Q]);return(0,b.jsxs)(o.Fragment,{children:[xe&&(0,b.jsx)(y,{open:xe,closeModalAndRefresh:function(e){Ze(!1),e&&K((0,M.v)())},idTenant:q||"",namespace:J||""}),ye&&(0,b.jsx)(_,{open:ye,idTenant:q||"",namespace:J||"",domains:(null===Q||void 0===Q?void 0:Q.domains)||null,closeModalAndRefresh:function(e){Se(!1),e&&K((0,M.v)())}}),(0,b.jsx)(D.Z,{separator:!1,children:"Details"}),(0,b.jsx)(T,{tenant:Q,classes:H}),(0,b.jsxs)(m.ZP,{container:!0,children:[(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:8,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"State:",value:null===Q||void 0===Q?void 0:Q.currentState})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"MinIO:",value:(0,b.jsx)(S.Z,{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all"},onClick:function(){Ze(!0)},children:Q?Q.image:""})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsxs)("h3",{children:["Domains",(0,b.jsx)(p.zxk,{id:"edit-domains",icon:(0,b.jsx)(p.dY8,{}),onClick:function(){Se(!0)}})]})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Console:",value:(0,b.jsxs)(o.Fragment,{children:[null!==Q&&void 0!==Q&&null!==(n=Q.domains)&&void 0!==n&&n.console&&""!==(null===Q||void 0===Q||null===(t=Q.domains)||void 0===t?void 0:t.console)||null!==Q&&void 0!==Q&&null!==(r=Q.endpoints)&&void 0!==r&&r.console?"":"-",(null===Q||void 0===Q||null===(c=Q.endpoints)||void 0===c?void 0:c.console)&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:null===Q||void 0===Q||null===(d=Q.endpoints)||void 0===d?void 0:d.console,target:"_blank",rel:"noopener noreferrer",className:"".concat(H.linkedSection," ").concat(H.autoGeneratedLink),children:(null===Q||void 0===Q||null===(u=Q.endpoints)||void 0===u?void 0:u.console)||"-"}),(0,b.jsx)("br",{})]}),(null===Q||void 0===Q||null===(h=Q.domains)||void 0===h?void 0:h.console)&&""!==(null===Q||void 0===Q||null===(f=Q.domains)||void 0===f?void 0:f.console)&&(0,b.jsx)("a",{href:(null===Q||void 0===Q||null===(g=Q.domains)||void 0===g?void 0:g.console)||"",target:"_blank",rel:"noopener noreferrer",className:H.linkedSection,children:(null===Q||void 0===Q||null===(x=Q.domains)||void 0===x?void 0:x.console)||""})]})})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"MinIO Endpoint".concat(null!==Q&&void 0!==Q&&null!==(Z=Q.endpoints)&&void 0!==Z&&Z.minio&&1===(null===Q||void 0===Q||null===(w=Q.endpoints)||void 0===w?void 0:w.minio.length)?"":"s",":"),value:(0,b.jsxs)(o.Fragment,{children:[null!==Q&&void 0!==Q&&null!==(k=Q.domains)&&void 0!==k&&k.minio||null!==Q&&void 0!==Q&&null!==(P=Q.endpoints)&&void 0!==P&&P.minio?"":"-",(null===Q||void 0===Q||null===(C=Q.endpoints)||void 0===C?void 0:C.minio)&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:null===Q||void 0===Q||null===(R=Q.endpoints)||void 0===R?void 0:R.minio,target:"_blank",rel:"noopener noreferrer",className:"".concat(H.linkedSection," ").concat(H.autoGeneratedLink),children:(null===Q||void 0===Q||null===(I=Q.endpoints)||void 0===I?void 0:I.minio)||"-"}),(0,b.jsx)("br",{})]}),(null===Q||void 0===Q||null===(E=Q.domains)||void 0===E?void 0:E.minio)&&Q.domains.minio.map((function(e){return(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:H.linkedSection,children:e}),(0,b.jsx)("br",{})]},e)}))]})})})]}),(0,b.jsxs)(m.ZP,{item:!0,xs:12,sm:12,md:4,children:[(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Instances:",value:de})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Clusters:",value:le,stkProps:{style:{marginRight:47}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Total Drives:",value:pe,stkProps:{style:{marginRight:43}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Write Quorum:",value:null!==Q&&void 0!==Q&&null!==(F=Q.status)&&void 0!==F&&F.write_quorum?null===Q||void 0===Q||null===(A=Q.status)||void 0===A?void 0:A.write_quorum:0})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Drives Online:",value:null!==Q&&void 0!==Q&&null!==(z=Q.status)&&void 0!==z&&z.drives_online?null===Q||void 0===Q||null===(O=Q.status)||void 0===O?void 0:O.drives_online:0,stkProps:{style:{marginRight:8}}})}),(0,b.jsx)(m.ZP,{item:!0,xs:12,children:(0,b.jsx)(N.Z,{label:"Drives Offline:",value:null!==Q&&void 0!==Q&&null!==($=Q.status)&&void 0!==$&&$.drives_offline?null===Q||void 0===Q||null===(V=Q.status)||void 0===V?void 0:V.drives_offline:0,stkProps:{style:{marginRight:7}}})})]})]}),(0,b.jsx)(D.Z,{children:"Features"}),(0,b.jsxs)(v.Z,{sx:(0,a.Z)({},W),children:[(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"Logs:",value:U(Y,"tenant-log")},L)),(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"AD/LDAP:",value:U(te,"tenant-sts")},L)),(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"Encryption:",value:U(ee,"tenant-enc")},L))]}),(0,b.jsxs)(v.Z,{sx:(0,a.Z)({},W),children:[(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"MinIO TLS:",value:U(ne,"tenant-tls")},L)),(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"Monitoring:",value:U(X,"tenant-monitor")},L)),(0,b.jsx)(N.Z,(0,a.Z)({orientation:"row",label:"OpenID:",value:U(ie,"tenant-oidc")},L))]})]})}))},22512:function(e,n,t){var i=t(72791),a=t(20890),o=t(11135),l=t(25787),r=t(80184);n.Z=(0,l.Z)((function(e){var n;return(0,o.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,o=e.withBreak,l=void 0===o||o;return(0,r.jsxs)(i.Fragment,{children:[l&&(0,r.jsx)("br",{}),(0,r.jsx)(a.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var i=t(64836);n.Z=void 0;var a=i(t(45649)),o=t(80184),l=(0,a.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=l},53767:function(e,n,t){var i=t(4942),a=t(63366),o=t(87462),l=t(72791),r=t(51184),s=t(45682),c=t(78519),d=t(82466),u=t(66934),m=t(31402),v=t(80184),p=["component","direction","spacing","divider","children"];function h(e,n){var t=l.Children.toArray(e).filter(Boolean);return t.reduce((function(e,i,a){return e.push(i),a0?u[t[n-1]]:"column";u[e]=i}}));a=(0,d.Z)(a,(0,r.k9)({theme:t},m,(function(e,t){return{"& > :not(style) + :not(style)":(0,i.Z)({margin:0},"margin".concat((a=t?u[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[a])),(0,s.NA)(l,e))};var a})))}return a=(0,r.dt)(t.breakpoints,a)})),g=l.forwardRef((function(e,n){var t=(0,m.Z)({props:e,name:"MuiStack"}),i=(0,c.Z)(t),l=i.component,r=void 0===l?"div":l,s=i.direction,d=void 0===s?"column":s,u=i.spacing,g=void 0===u?0:u,x=i.divider,Z=i.children,j=(0,a.Z)(i,p),b={direction:d,spacing:g};return(0,v.jsx)(f,(0,o.Z)({as:r,ownerState:b,ref:n},j,{children:x?h(Z,x):Z}))}));n.Z=g},23688:function(e,n,t){function i(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!==e&&void 0!==e&&this.setState(e)}function a(e){this.setState(function(n){var t=this.constructor.getDerivedStateFromProps(e,n);return null!==t&&void 0!==t?t:null}.bind(this))}function o(e,n){try{var t=this.props,i=this.state;this.props=e,this.state=n,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(t,i)}finally{this.props=t,this.state=i}}function l(e){var n=e.prototype;if(!n||!n.isReactComponent)throw new Error("Can only polyfill class components");if("function"!==typeof e.getDerivedStateFromProps&&"function"!==typeof n.getSnapshotBeforeUpdate)return e;var t=null,l=null,r=null;if("function"===typeof n.componentWillMount?t="componentWillMount":"function"===typeof n.UNSAFE_componentWillMount&&(t="UNSAFE_componentWillMount"),"function"===typeof n.componentWillReceiveProps?l="componentWillReceiveProps":"function"===typeof n.UNSAFE_componentWillReceiveProps&&(l="UNSAFE_componentWillReceiveProps"),"function"===typeof n.componentWillUpdate?r="componentWillUpdate":"function"===typeof n.UNSAFE_componentWillUpdate&&(r="UNSAFE_componentWillUpdate"),null!==t||null!==l||null!==r){var s=e.displayName||e.name,c="function"===typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+s+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==t?"\n "+t:"")+(null!==l?"\n "+l:"")+(null!==r?"\n "+r:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"===typeof e.getDerivedStateFromProps&&(n.componentWillMount=i,n.componentWillReceiveProps=a),"function"===typeof n.getSnapshotBeforeUpdate){if("function"!==typeof n.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");n.componentWillUpdate=o;var d=n.componentDidUpdate;n.componentDidUpdate=function(e,n,t){var i=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:t;d.call(this,e,n,i)}}return e}t.r(n),t.d(n,{polyfill:function(){return l}}),i.__suppressDeprecationWarning=!0,a.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0}}]);
+//# sourceMappingURL=1030.39fd7796.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1030.39fd7796.chunk.js.map b/portal-ui/build/static/js/1030.39fd7796.chunk.js.map
new file mode 100644
index 000000000..4e4828ef6
--- /dev/null
+++ b/portal-ui/build/static/js/1030.39fd7796.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1030.39fd7796.chunk.js","mappings":"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","sources":["screens/Console/Common/AButton/AButton.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","screens/Console/Common/UsageBar/UsageBar.tsx","screens/Console/Tenants/ListTenants/TenantCapacity.tsx","screens/Console/Tenants/TenantDetails/UpdateTenantModal.tsx","screens/Console/Common/UsageBarWrapper/SummaryUsageBar.tsx","screens/Console/Tenants/TenantDetails/EditDomains.tsx","screens/Console/Tenants/TenantDetails/TenantSummary.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n border: 0,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n fontSize: \"inherit\",\n color: theme.palette.info.main,\n fontFamily: \"Lato, sans-serif\",\n },\n });\n\ninterface IAButton extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst AButton = ({ classes, children, ...rest }: IAButton) => {\n return (\n \n {children}\n \n );\n};\n\nexport default withStyles(styles)(AButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","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 {label}\n \n \n {value}\n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nexport interface ISizeBarItem {\n value: number;\n itemName: string;\n color: string;\n}\n\nexport interface IUsageBar {\n totalValue: number;\n sizeItems: ISizeBarItem[];\n bgColor?: string;\n}\n\nconst UsageBar = ({\n totalValue,\n sizeItems,\n bgColor = \"#ededed\",\n}: IUsageBar) => {\n return (\n \n {sizeItems.map((sizeElement, index) => {\n const itemPercentage = (sizeElement.value * 100) / totalValue;\n return (\n
\n );\n })}\n
\n );\n};\n\nexport default UsageBar;\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 { Cell, Pie, PieChart } from \"recharts\";\nimport { CapacityValue, CapacityValues } from \"./types\";\nimport { niceBytesInt } from \"../../../../common/utils\";\nimport { CircleIcon } from \"mds\";\nimport UsageBar, { ISizeBarItem } from \"../../Common/UsageBar/UsageBar\";\n\ninterface ITenantCapacity {\n totalCapacity: number;\n usedSpaceVariants: CapacityValues[];\n statusClass: string;\n render?: \"pie\" | \"bar\";\n}\n\nconst TenantCapacity = ({\n totalCapacity,\n usedSpaceVariants,\n statusClass,\n render = \"pie\",\n}: ITenantCapacity) => {\n const colors = [\n \"#8dacd3\",\n \"#bca1ea\",\n \"#92e8d2\",\n \"#efc9ac\",\n \"#97f274\",\n \"#f7d291\",\n \"#71ACCB\",\n \"#f28282\",\n \"#e28cc1\",\n \"#2781B0\",\n ];\n\n const BGColor = \"#ededed\";\n\n const totalUsedSpace = usedSpaceVariants.reduce((acc, currValue) => {\n return acc + currValue.value;\n }, 0);\n\n const emptySpace = totalCapacity - totalUsedSpace;\n\n let tiersList: CapacityValue[] = [];\n\n const standardTier = usedSpaceVariants.find(\n (tier) => tier.variant === \"STANDARD\"\n ) || {\n value: 0,\n variant: \"empty\",\n };\n\n if (usedSpaceVariants.length > 10) {\n const totalUsedByTiers = totalUsedSpace - standardTier.value;\n\n tiersList = [\n { value: totalUsedByTiers, color: \"#2781B0\", label: \"Total Tiers Space\" },\n ];\n } else {\n tiersList = usedSpaceVariants\n .filter((variant) => variant.variant !== \"STANDARD\")\n .map((variant, index) => {\n return {\n value: variant.value,\n color: colors[index],\n label: `Tier - ${variant.variant}`,\n };\n });\n }\n\n let standardTierColor = \"#07193E\";\n\n const usedPercentage = (standardTier.value * 100) / totalCapacity;\n\n if (usedPercentage >= 90) {\n standardTierColor = \"#C83B51\";\n } else if (usedPercentage >= 75) {\n standardTierColor = \"#FFAB0F\";\n }\n\n const plotValues: CapacityValue[] = [\n {\n value: standardTier.value,\n color: standardTierColor,\n label: \"Used Space by Tenant\",\n },\n ...tiersList,\n {\n value: emptySpace,\n color: render === \"bar\" ? BGColor : \"transparent\",\n label: \"Empty Space\",\n },\n ];\n\n if (render === \"bar\") {\n const plotValuesForUsageBar: ISizeBarItem[] = plotValues.map((plotVal) => {\n return {\n value: plotVal.value,\n color: plotVal.color,\n itemName: plotVal.label,\n };\n });\n\n return (\n \n \n
\n );\n }\n\n return (\n \n
\n \n
\n
\n {!isNaN(totalUsedSpace) ? niceBytesInt(totalUsedSpace) : \"N/A\"}\n \n
\n
\n \n \n {plotValues.map((entry, index) => (\n | \n ))}\n \n \n
\n
\n );\n};\n\nexport default TenantCapacity;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../common/api\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IUpdateTenantModal {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n infoText: {\n fontSize: 14,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst UpdateTenantModal = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n classes,\n}: IUpdateTenantModal) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [minioImage, setMinioImage] = useState(\"\");\n const [imageRegistry, setImageRegistry] = useState(false);\n const [imageRegistryEndpoint, setImageRegistryEndpoint] =\n useState(\"\");\n const [imageRegistryUsername, setImageRegistryUsername] =\n useState(\"\");\n const [imageRegistryPassword, setImageRegistryPassword] =\n useState(\"\");\n const [validMinioImage, setValidMinioImage] = useState(true);\n\n const validateImage = useCallback(\n (fieldToCheck: string) => {\n const pattern = new RegExp(\"^$|^((.*?)/(.*?):(.+))$\");\n\n switch (fieldToCheck) {\n case \"minioImage\":\n setValidMinioImage(pattern.test(minioImage));\n break;\n }\n },\n [minioImage]\n );\n\n useEffect(() => {\n validateImage(\"minioImage\");\n }, [minioImage, validateImage]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setMinioImage(\"\");\n setImageRegistry(false);\n setImageRegistryEndpoint(\"\");\n setImageRegistryUsername(\"\");\n setImageRegistryPassword(\"\");\n };\n\n const updateMinIOImage = () => {\n setIsSending(true);\n\n let payload = {\n image: minioImage,\n enable_prometheus: true,\n };\n\n if (imageRegistry) {\n const registry: any = {\n image_registry: {\n registry: imageRegistryEndpoint,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n payload = {\n ...payload,\n ...registry,\n };\n }\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}`,\n payload\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Image updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n \n \n \n \n Please enter the MinIO image from dockerhub to use. If blank, then\n latest build will be used.\n
\n \n \n \n {\n setMinioImage(e.target.value);\n }}\n />\n \n \n ) => {\n setImageRegistry(!imageRegistry);\n }}\n label={\"Set Custom Image Registry\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n {imageRegistry && (\n \n \n {\n setImageRegistryEndpoint(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryUsername(e.target.value);\n }}\n />\n \n \n {\n setImageRegistryPassword(e.target.value);\n }}\n />\n \n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(UpdateTenantModal);\n","import React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { LinearProgress, Stack } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n CapacityValues,\n ITenant,\n ValueUnit,\n} from \"../../Tenants/ListTenants/types\";\nimport { CircleIcon } from \"mds\";\nimport { niceBytes, niceBytesInt } from \"../../../../common/utils\";\nimport { Loader } from \"mds\";\nimport TenantCapacity from \"../../Tenants/ListTenants/TenantCapacity\";\nimport ErrorBlock from \"../../../shared/ErrorBlock\";\nimport LabelValuePair from \"./LabelValuePair\";\n\ninterface ISummaryUsageBar {\n tenant: ITenant;\n label: string;\n error: string;\n loading: boolean;\n classes: any;\n labels?: boolean;\n healthStatus?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n centerItem: {\n textAlign: \"center\",\n },\n });\n\nexport const BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 10,\n borderRadius: 5,\n },\n colorPrimary: {\n backgroundColor: \"#F4F4F4\",\n },\n bar: {\n borderRadius: 5,\n backgroundColor: \"#081C42\",\n },\n padChart: {\n padding: \"5px\",\n },\n}))(LinearProgress);\n\nconst SummaryUsageBar = ({\n classes,\n tenant,\n healthStatus,\n loading,\n error,\n}: ISummaryUsageBar) => {\n let raw: ValueUnit = { value: \"n/a\", unit: \"\" };\n let capacity: ValueUnit = { value: \"n/a\", unit: \"\" };\n let used: ValueUnit = { value: \"n/a\", unit: \"\" };\n let localUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n let tieredUse: ValueUnit = { value: \"n/a\", unit: \"\" };\n\n if (tenant.status?.usage?.raw) {\n const b = niceBytes(`${tenant.status.usage.raw}`, true);\n const parts = b.split(\" \");\n raw.value = parts[0];\n raw.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity) {\n const b = niceBytes(`${tenant.status.usage.capacity}`, true);\n const parts = b.split(\" \");\n capacity.value = parts[0];\n capacity.unit = parts[1];\n }\n if (tenant.status?.usage?.capacity_usage) {\n const b = niceBytesInt(tenant.status.usage.capacity_usage, true);\n const parts = b.split(\" \");\n used.value = parts[0];\n used.unit = parts[1];\n }\n\n let spaceVariants: CapacityValues[] = [];\n if (!tenant.tiers || tenant.tiers.length === 0) {\n spaceVariants = [\n { value: tenant.status?.usage?.capacity_usage || 0, variant: \"STANDARD\" },\n ];\n } else {\n spaceVariants = tenant.tiers.map((itemTenant) => {\n return { value: itemTenant.size, variant: itemTenant.name };\n });\n let internalUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type === \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size, 0);\n let tieredUsage = tenant.tiers\n .filter((itemTenant) => {\n return itemTenant.type !== \"internal\";\n })\n .reduce((sum, itemTenant) => sum + itemTenant.size, 0);\n\n const t = niceBytesInt(tieredUsage, true);\n const parts = t.split(\" \");\n tieredUse.value = parts[0];\n tieredUse.unit = parts[1];\n\n const is = niceBytesInt(internalUsage, true);\n const partsInternal = is.split(\" \");\n localUse.value = partsInternal[0];\n localUse.unit = partsInternal[1];\n }\n\n const renderComponent = () => {\n if (!loading) {\n return error !== \"\" ? (\n \n ) : (\n \n \n \n {(!tenant.tiers || tenant.tiers.length === 0) && (\n \n \n \n )}\n {tenant.tiers && tenant.tiers.length > 0 && (\n \n \n \n \n )}\n {healthStatus && (\n \n \n \n }\n />\n )}\n \n \n );\n }\n\n return null;\n };\n\n return (\n \n {loading && (\n \n \n \n \n
\n )}\n {renderComponent()}\n \n );\n};\n\nexport default withStyles(styles)(SummaryUsageBar);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IDomainsRequest,\n} from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport api from \"../../../../common/api\";\nimport { RemoveIcon } from \"mds\";\nimport {\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IEditDomains {\n open: boolean;\n closeModalAndRefresh: (update: boolean) => any;\n namespace: string;\n idTenant: string;\n domains: IDomainsRequest | null;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n domainInline: {\n display: \"flex\",\n marginBottom: 15,\n },\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n width: 15,\n height: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst EditDomains = ({\n open,\n closeModalAndRefresh,\n namespace,\n idTenant,\n domains,\n classes,\n}: IEditDomains) => {\n const dispatch = useAppDispatch();\n const [isSending, setIsSending] = useState(false);\n const [consoleDomain, setConsoleDomain] = useState(\"\");\n const [minioDomains, setMinioDomains] = useState([\"\"]);\n const [consoleDomainValid, setConsoleDomainValid] = useState(true);\n const [minioDomainValid, setMinioDomainValid] = useState([true]);\n\n useEffect(() => {\n if (domains) {\n const consoleDomainSet = domains.console || \"\";\n setConsoleDomain(consoleDomainSet);\n\n if (consoleDomainSet !== \"\") {\n // We Validate console domain\n const consoleRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/\n );\n\n setConsoleDomainValid(consoleRegExp.test(consoleDomainSet));\n } else {\n setConsoleDomainValid(true);\n }\n\n if (domains.minio && domains.minio.length > 0) {\n setMinioDomains(domains.minio);\n\n const minioRegExp = new RegExp(\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/\n );\n\n const initialValidations = domains.minio.map((domain) => {\n if (domain.trim() !== \"\") {\n return minioRegExp.test(domain);\n } else {\n return true;\n }\n });\n\n setMinioDomainValid(initialValidations);\n }\n }\n }, [domains]);\n\n const closeAction = () => {\n closeModalAndRefresh(false);\n };\n\n const resetForm = () => {\n setConsoleDomain(\"\");\n setConsoleDomainValid(true);\n setMinioDomains([\"\"]);\n setMinioDomainValid([true]);\n };\n\n const updateDomainsList = () => {\n setIsSending(true);\n\n let payload = {\n domains: {\n console: consoleDomain,\n minio: minioDomains.filter((minioDomain) => minioDomain.trim() !== \"\"),\n },\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/namespaces/${namespace}/tenants/${idTenant}/domains`,\n payload\n )\n .then(() => {\n setIsSending(false);\n dispatch(setSnackBarMessage(`Domains updated successfully`));\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setIsSending(false);\n dispatch(setModalErrorSnackMessage(error));\n });\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const cloneDomains = [...minioDomains];\n cloneDomains[index] = value;\n\n setMinioDomains(cloneDomains);\n };\n\n const addNewMinIODomain = () => {\n const cloneDomains = [...minioDomains];\n const cloneValidations = [...minioDomainValid];\n\n cloneDomains.push(\"\");\n cloneValidations.push(true);\n\n setMinioDomains(cloneDomains);\n setMinioDomainValid(cloneValidations);\n };\n\n const removeMinIODomain = (removeIndex: number) => {\n const filteredDomains = minioDomains.filter(\n (_, index) => index !== removeIndex\n );\n\n const filterValidations = minioDomainValid.filter(\n (_, index) => index !== removeIndex\n );\n\n setMinioDomains(filteredDomains);\n setMinioDomainValid(filterValidations);\n };\n\n const setMinioDomainValidation = (domainValid: boolean, index: number) => {\n const cloneValidation = [...minioDomainValid];\n cloneValidation[index] = domainValid;\n\n setMinioDomainValid(cloneValidation);\n };\n return (\n \n \n \n \n \n ) => {\n setConsoleDomain(e.target.value);\n\n setConsoleDomainValid(e.target.validity.valid);\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n error={\n !consoleDomainValid\n ? \"Domain format is incorrect (http|https://subdomain.domain:port/subpath1/subpath2)\"\n : \"\"\n }\n />\n
\n \n
MinIO Domains \n
\n {minioDomains.map((domain, index) => {\n return (\n
\n
) => {\n updateMinIODomain(e.target.value, index);\n setMinioDomainValidation(\n e.target.validity.valid,\n index\n );\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?$\"\n }\n error={\n !minioDomainValid[index]\n ? \"MinIO domain format is incorrect (http|https://subdomain.domain)\"\n : \"\"\n }\n />\n \n\n \n removeMinIODomain(index)}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n \n );\n })}\n
\n
\n \n \n \n !domain).length > 0\n }\n onClick={updateDomainsList}\n label={\"Save\"}\n />\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(EditDomains);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { Box, Grid } from \"@mui/material\";\nimport UpdateTenantModal from \"./UpdateTenantModal\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SummaryUsageBar from \"../../Common/UsageBarWrapper/SummaryUsageBar\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport SectionTitle from \"../../Common/SectionTitle\";\nimport { Button } from \"mds\";\nimport { EditIcon } from \"mds\";\nimport EditDomains from \"./EditDomains\";\nimport { ITenant } from \"../ListTenants/types\";\nimport { useParams } from \"react-router-dom\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\n\ninterface ITenantsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n redState: {\n color: theme.palette.error.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n yellowState: {\n color: theme.palette.warning.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greenState: {\n color: theme.palette.success.main,\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n greyState: {\n color: \"grey\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n },\n },\n detailSection: {\n \"& div\": {\n \"& b,i\": {\n minWidth: 80,\n display: \"block\",\n float: \"left\",\n },\n \"& i\": {\n fontStyle: \"normal\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n },\n \"& div\": {\n clear: \"both\",\n },\n clear: \"both\",\n marginBottom: 2,\n },\n },\n linkedSection: {\n color: theme.palette.info.main,\n fontFamily: \"'Lato', sans-serif\",\n },\n autoGeneratedLink: {\n fontStyle: \"italic\",\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst healthStatusToClass = (health_status: string = \"red\", classes: any) => {\n return health_status === \"red\"\n ? classes.redState\n : health_status === \"yellow\"\n ? classes.yellowState\n : health_status === \"green\"\n ? classes.greenState\n : classes.greyState;\n};\n\nconst StorageSummary = ({\n tenant,\n classes,\n}: {\n tenant: ITenant | null;\n classes: any;\n}) => {\n if (!tenant) {\n return null;\n }\n\n return (\n \n );\n};\n\nconst getToggle = (toggleValue: boolean, idPrefix = \"\") => {\n return (\n {}}\n switchOnly\n />\n );\n};\n\nconst featureRowStyle = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginTop: \"10px\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n};\n\nconst featureItemStyleProps = {\n stkProps: {\n sx: {\n flex: 1,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"@media (max-width: 900px)\": {\n marginRight: \"25px\",\n },\n },\n },\n lblProps: {\n style: {\n minWidth: 100,\n },\n },\n};\nconst TenantSummary = ({ classes }: ITenantsSummary) => {\n const dispatch = useAppDispatch();\n const { tenantName, tenantNamespace } = useParams();\n\n const tenant = useSelector((state: AppState) => state.tenants.tenantInfo);\n const logEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"logEnabled\", false)\n );\n const monitoringEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"monitoringEnabled\", false)\n );\n const encryptionEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"encryptionEnabled\", false)\n );\n const minioTLS = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"minioTLS\", false)\n );\n const adEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpAdEnabled\", false)\n );\n const oidcEnabled = useSelector((state: AppState) =>\n get(state.tenants.tenantInfo, \"idpOidcEnabled\", false)\n );\n\n const [poolCount, setPoolCount] = useState(0);\n const [instances, setInstances] = useState(0);\n const [volumes, setVolumes] = useState(0);\n const [updateMinioVersion, setUpdateMinioVersion] = useState(false);\n const [editDomainsOpen, setEditDomainsOpen] = useState(false);\n\n useEffect(() => {\n if (tenant) {\n setPoolCount(tenant.pools.length);\n setVolumes(tenant.total_volumes || 0);\n setInstances(tenant.total_instances || 0);\n }\n }, [tenant]);\n\n const closeEditDomainsModal = (refresh: boolean) => {\n setEditDomainsOpen(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n };\n\n return (\n \n {updateMinioVersion && (\n {\n setUpdateMinioVersion(false);\n if (refresh) {\n dispatch(getTenantAsync());\n }\n }}\n idTenant={tenantName || \"\"}\n namespace={tenantNamespace || \"\"}\n />\n )}\n\n {editDomainsOpen && (\n \n )}\n\n Details \n\n \n\n \n \n \n \n \n \n {\n setUpdateMinioVersion(true);\n }}\n >\n {tenant ? tenant.image : \"\"}\n \n }\n />\n \n \n \n Domains\n }\n onClick={() => {\n setEditDomainsOpen(true);\n }}\n />\n \n \n \n \n {(!tenant?.domains?.console ||\n tenant?.domains?.console === \"\") &&\n !tenant?.endpoints?.console\n ? \"-\"\n : \"\"}\n\n {tenant?.endpoints?.console && (\n \n \n {tenant?.endpoints?.console || \"-\"}\n \n \n \n )}\n\n {tenant?.domains?.console && tenant?.domains?.console !== \"\" && (\n \n {tenant?.domains?.console || \"\"}\n \n )}\n \n }\n />\n \n \n \n {!tenant?.domains?.minio && !tenant?.endpoints?.minio\n ? \"-\"\n : \"\"}\n {tenant?.endpoints?.minio && (\n \n \n {tenant?.endpoints?.minio || \"-\"}\n \n \n \n )}\n\n {tenant?.domains?.minio &&\n tenant.domains.minio.map((domain) => {\n return (\n \n \n {domain}\n \n \n \n );\n })}\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n Features \n \n \n\n \n \n \n \n \n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(TenantSummary);\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\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;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { createUnarySpacing, getValue, handleBreakpoints, mergeBreakpointsInOrder, unstable_extendSxProp as extendSxProp, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { deepmerge } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\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 */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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 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};\nconst StackRoot = styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root];\n }\n})(style);\nconst Stack = /*#__PURE__*/React.forwardRef(function Stack(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiStack'\n });\n const props = extendSxProp(themeProps);\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing\n };\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: divider ? joinChildren(children, divider) : children\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} : void 0;\nexport default Stack;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n"],"names":["withStyles","theme","createStyles","root","padding","margin","border","backgroundColor","textDecoration","cursor","fontSize","color","palette","info","main","fontFamily","classes","children","rest","className","deleteDialogStyles","content","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","onClose","modalOpen","title","wideLimit","noContentPadding","titleIcon","dispatch","useAppDispatch","useState","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","type","customSize","paper","fullWidth","detailedErrorMsg","length","open","scroll","event","reason","titleText","closeContainer","id","closeButton","onClick","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","label","value","orientation","stkProps","lblProps","valProps","direction","xs","sm","style","marginRight","fontWeight","totalValue","sizeItems","bgColor","height","borderRadius","display","transitionDuration","overflow","map","sizeElement","index","itemPercentage","toString","totalCapacity","usedSpaceVariants","statusClass","render","colors","BGColor","totalUsedSpace","reduce","acc","currValue","emptySpace","tiersList","standardTier","find","tier","variant","filter","standardTierColor","usedPercentage","plotValues","plotValuesForUsageBar","plotVal","itemName","marginBottom","position","right","top","zIndex","left","transform","isNaN","niceBytesInt","PieChart","Pie","data","cx","cy","dataKey","outerRadius","innerRadius","fill","isAnimationActive","stroke","entry","Cell","infoText","formFieldStyles","modalStyleUtils","closeModalAndRefresh","namespace","idTenant","isSending","setIsSending","minioImage","setMinioImage","imageRegistry","setImageRegistry","imageRegistryEndpoint","setImageRegistryEndpoint","imageRegistryUsername","setImageRegistryUsername","imageRegistryPassword","setImageRegistryPassword","validMinioImage","setValidMinioImage","validateImage","useCallback","fieldToCheck","pattern","RegExp","test","ModalWrapper","Grid","container","item","modalFormScrollable","formFieldRow","InputBoxWrapper","name","placeholder","onChange","e","target","FormSwitchWrapper","checked","indicatorLabels","Fragment","modalButtonBar","disabled","trim","payload","image","enable_prometheus","registry","image_registry","username","password","api","then","setSnackBarMessage","catch","error","setModalErrorSnackMessage","colorPrimary","bar","padChart","LinearProgress","centerItem","textAlign","tenant","healthStatus","loading","raw","unit","capacity","used","localUse","tieredUse","status","usage","parts","niceBytes","split","capacity_usage","spaceVariants","tiers","itemTenant","internalUsage","sum","tieredUsage","partsInternal","ErrorBlock","errorMessage","withBreak","TenantCapacity","Stack","spacing","md","alignItems","LabelValuePair","renderComponent","domainInline","overlayAction","marginLeft","background","domains","consoleDomain","setConsoleDomain","minioDomains","setMinioDomains","consoleDomainValid","setConsoleDomainValid","minioDomainValid","setMinioDomainValid","consoleDomainSet","console","consoleRegExp","minio","minioRegExp","initialValidations","domain","addNewMinIODomain","cloneDomains","cloneValidations","push","configSectionItem","containerItem","validity","valid","updateMinIODomain","domainValid","cloneValidation","setMinioDomainValidation","IconButton","Add","removeIndex","filteredDomains","_","filterValidations","removeMinIODomain","minioDomain","healthStatusToClass","health_status","redState","yellowState","greenState","greyState","StorageSummary","getToggle","toggleValue","idPrefix","switchOnly","featureRowStyle","justifyContent","marginTop","flexFlow","featureItemStyleProps","sx","flex","minWidth","tenantDetailsStyles","warning","success","detailSection","float","fontStyle","wordWrap","overflowWrap","clear","linkedSection","autoGeneratedLink","containerForHeader","useParams","tenantName","tenantNamespace","tenants","tenantInfo","logEnabled","get","monitoringEnabled","encryptionEnabled","minioTLS","adEnabled","oidcEnabled","poolCount","setPoolCount","instances","setInstances","volumes","setVolumes","updateMinioVersion","setUpdateMinioVersion","editDomainsOpen","setEditDomainsOpen","pools","total_volumes","total_instances","refresh","getTenantAsync","SectionTitle","separator","currentState","AButton","textOverflow","whiteSpace","wordBreak","icon","endpoints","href","rel","write_quorum","drives_online","drives_offline","Box","errorBlock","component","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","_excluded","joinChildren","childrenArray","React","Boolean","output","child","key","StackRoot","styled","slot","overridesResolver","props","styles","ownerState","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","transformer","createUnarySpacing","base","Object","keys","breakpoint","directionValues","spacingValues","forEach","previousDirectionValue","deepmerge","row","column","getValue","mergeBreakpointsInOrder","inProps","ref","themeProps","useThemeProps","extendSxProp","divider","other","_objectWithoutPropertiesLoose","_jsx","as","componentWillMount","this","constructor","getDerivedStateFromProps","undefined","setState","componentWillReceiveProps","nextProps","prevState","bind","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","prototype","isReactComponent","Error","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","call","__suppressDeprecationWarning"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1275.1d84ee6a.chunk.js b/portal-ui/build/static/js/1275.1d84ee6a.chunk.js
new file mode 100644
index 000000000..b0b8b70ea
--- /dev/null
+++ b/portal-ui/build/static/js/1275.1d84ee6a.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1275],{23804:function(e,n,t){t(72791);var r=t(11135),a=t(25787),i=t(61889),s=t(80184);n.Z=(0,a.Z)((function(e){return(0,r.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var n=e.classes,t=e.iconComponent,r=e.title,a=e.help;return(0,s.jsx)("div",{className:n.root,children:(0,s.jsxs)(i.ZP,{container:!0,children:[(0,s.jsxs)(i.ZP,{item:!0,xs:12,className:n.leftItems,children:[t,r]}),(0,s.jsx)(i.ZP,{item:!0,xs:12,className:n.helpText,children:a})]})})}))},37798:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var r=t(1413),a=t(72791),i=t(26181),s=t.n(i),o=t(75952),l=t(11135),c=t(25787),u=t(56028),d=t(61889),m=t(77196),f=t(63466),h=t(78029),x=t.n(h),p=t(23814),g=t(27454),v=t(80184),y=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,r.Z)((0,r.Z)({},p.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,r=e.value,a=void 0===r?"":r,i=e.classes,s=void 0===i?{}:i;return(0,v.jsxs)("div",{className:s.container,children:[(0,v.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,v.jsx)("div",{className:s.inputWithCopy,children:(0,v.jsx)(m.Z,{value:a,readOnly:!0,endAdornment:(0,v.jsx)(f.Z,{position:"end",children:(0,v.jsx)(g.Z,{tooltip:"Copy",children:(0,v.jsx)(x(),{text:a,children:(0,v.jsx)(o.zxk,{id:"copy-clipboard","aria-label":"copy",onClick:function(){},onMouseDown:function(){},style:{width:"28px",height:"28px",padding:"0px"},icon:(0,v.jsx)(o.TIy,{})})})})})})})]})})),j=function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+n),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{display:"flex",justifyContent:"flex-end",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,i=e.open,l=e.closeModal,c=e.entity;if(!t)return null;var m=s()(t,"console",null),f=s()(t,"idp",!1);return(0,v.jsx)(u.Z,{modalOpen:i,onClose:function(){l()},title:(0,v.jsx)("div",{className:n.promptTitle,children:(0,v.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,v.jsx)(o.tVY,{}),children:(0,v.jsxs)(d.ZP,{container:!0,children:[(0,v.jsxs)(d.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!f&&m&&(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(d.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,v.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(m)&&m.map((function(e,n){return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(y,{label:"Access Key",value:e.accessKey}),(0,v.jsx)(y,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(m)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(y,{label:"Access Key",value:m.accessKey}),(0,v.jsx)(y,{label:"Secret Key",value:m.secretKey})]})]})}),(null===m||void 0===m)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(y,{label:"Access Key",value:t.accessKey||""}),(0,v.jsx)(y,{label:"Secret Key",value:t.secretKey||""})]}),f?(0,v.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,v.jsxs)("div",{className:n.warningBlock,children:[(0,v.jsx)(o.e6P,{}),(0,v.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,v.jsx)(d.ZP,{item:!0,xs:12,className:n.buttonContainer,children:!f&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(g.Z,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,v.jsx)(o.zxk,{id:"download-button",label:"Download for import",className:n.buttonSpacer,onClick:function(){var e={};m?e=Array.isArray(m)?m.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:m.url,accessKey:m.accessKey,secretKey:m.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};j("credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,v.jsx)(o._8t,{}),variant:"callAction"})}),Array.isArray(m)&&m.length>1&&(0,v.jsx)(g.Z,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,v.jsx)(o.zxk,{id:"download-all-button",label:"Download all access credentials",className:n.buttonSpacer,onClick:function(){var e={};m&&Array.isArray(m)&&m.length>1&&(e=m.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));j("all_credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,v.jsx)(o._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}))},92217:function(e,n,t){var r=t(1413),a=t(72791),i=t(61889),s=t(30829),o=t(20068),l=t(64554),c=t(11135),u=t(25787),d=t(75952),m=t(23814),f=t(78029),h=t.n(f),x=t(90932),p=t(27454),g=t(80184);n.Z=(0,u.Z)((function(e){return(0,c.Z)((0,r.Z)({},m.YI))}))((function(e){var n=e.value,t=e.label,r=void 0===t?"":t,c=e.tooltip,u=void 0===c?"":c,m=e.mode,f=void 0===m?"json":m,v=e.classes,y=e.onBeforeChange,j=(e.readOnly,e.editorHeight),Z=void 0===j?"250px":j;return(0,g.jsxs)(a.Fragment,{children:[(0,g.jsx)(i.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,g.jsxs)(s.Z,{className:v.inputLabel,children:[(0,g.jsx)("span",{children:r}),""!==u&&(0,g.jsx)("div",{className:v.tooltipContainer,children:(0,g.jsx)(o.Z,{title:u,placement:"top-start",children:(0,g.jsx)("div",{className:v.tooltip,children:(0,g.jsx)(d.byK,{})})})})]})}),(0,g.jsx)(i.ZP,{item:!0,xs:12,style:{maxHeight:Z,overflow:"auto",border:"1px solid #eaeaea"},children:(0,g.jsx)(x.Z,{value:n,language:f,onChange:function(e){y(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:Z||"initial",color:"#000000"}})}),(0,g.jsx)(i.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,g.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,g.jsx)(p.Z,{tooltip:"Copy to Clipboard",children:(0,g.jsx)(h(),{text:n,children:(0,g.jsx)(d.zxk,{type:"button",id:"copy-code-mirror",icon:(0,g.jsx)(d.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:function(e,n,t){t.d(n,{Z:function(){return j}});var r=t(29439),a=t(1413),i=t(72791),s=t(26181),o=t.n(s),l=t(61889),c=t(30829),u=t(20068),d=t(13400),m=t(99663),f=t(86711),h=t(11135),x=t(25787),p=t(23814),g=t(75952),v=t(22512),y=t(80184),j=(0,x.Z)((function(e){return(0,h.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},p.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},p.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var n=e.label,t=e.classes,a=e.onChange,s=e.id,h=e.name,x=e.disabled,p=void 0!==x&&x,j=e.tooltip,Z=void 0===j?"":j,C=e.required,b=e.error,S=void 0===b?"":b,_=e.accept,N=void 0===_?"":_,A=e.value,T=void 0===A?"":A,P=(0,i.useState)(!1),I=(0,r.Z)(P,2),w=I[0],k=I[1];return(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(t.fileInputField," ").concat(t.fieldBottom," ").concat(t.fieldContainer," ").concat(""!==S?t.errorInField:""),children:[""!==n&&(0,y.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==S?t.fieldLabelError:""," ").concat(t.inputLabel),children:[(0,y.jsxs)("span",{children:[n,C?"*":""]}),""!==Z&&(0,y.jsx)("div",{className:t.tooltipContainer,children:(0,y.jsx)(u.Z,{title:Z,placement:"top-start",children:(0,y.jsx)("div",{className:t.tooltip,children:(0,y.jsx)(g.byK,{})})})})]}),w||""===T?(0,y.jsxs)("div",{className:t.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:h,onChange:function(e){var n=o()(e,"target.files[0].name","");!function(e,n){var t=e.target.files[0],r=new FileReader;r.readAsDataURL(t),r.onload=function(){var e=r.result;if(e){var t=e.toString().split("base64,");2===t.length&&n(t[1])}}}(e,(function(e){a(e,n)}))},accept:N,required:C,disabled:p,className:t.fileInputField}),""!==T&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){k(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(f.Z,{})}),""!==S&&(0,y.jsx)(v.Z,{errorMessage:S})]}):(0,y.jsxs)("div",{className:t.fileReselect,children:[(0,y.jsx)("div",{className:t.valueString,children:T}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){k(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},56028:function(e,n,t){var r=t(29439),a=t(1413),i=t(72791),s=t(78687),o=t(13400),l=t(55646),c=t(5574),u=t(65661),d=t(39157),m=t(11135),f=t(25787),h=t(23814),x=t(25469),p=t(29823),g=t(28057),v=t(87995),y=t(80184);n.Z=(0,f.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)({},h.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},h.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,f=e.children,h=e.classes,j=e.wideLimit,Z=void 0===j||j,C=e.noContentPadding,b=e.titleIcon,S=void 0===b?null:b,_=(0,x.TL)(),N=(0,i.useState)(!1),A=(0,r.Z)(N,2),T=A[0],P=A[1],I=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,i.useEffect)((function(){_((0,v.MK)(""))}),[_]),(0,i.useEffect)((function(){if(I){if(""===I.message)return void P(!1);"error"!==I.type&&P(!0)}}),[I]);var w=Z?{classes:{paper:h.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},k="";return I&&(k=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(k=I.message)),(0,y.jsxs)(c.Z,(0,a.Z)((0,a.Z)({open:t,classes:h},w),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:h.root,children:[(0,y.jsxs)(u.Z,{className:h.title,children:[(0,y.jsxs)("div",{className:h.titleText,children:[S," ",m]}),(0,y.jsx)("div",{className:h.closeContainer,children:(0,y.jsx)(o.Z,{"aria-label":"close",id:"close",className:h.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,y.jsx)(p.Z,{})})})]}),(0,y.jsx)(g.Z,{isModal:!0}),(0,y.jsx)(l.Z,{open:T,className:h.snackBarModal,onClose:function(){P(!1),_((0,v.MK)(""))},message:k,ContentProps:{className:"".concat(h.snackBar," ").concat(I&&"error"===I.type?h.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,y.jsx)(d.Z,{className:C?"":h.content,children:f})]}))}))},45997:function(e,n,t){t.r(n),t.d(n,{default:function(){return Qe}});var r=t(29439),a=t(1413),i=t(72791),s=t(26181),o=t.n(s),l=t(78687),c=t(61889),u=t(40986),d=t(11135),m=t(23814),f=t(28371),h=t(25469),x=t(93433),p=t(25787),g=t(35527),v=t(13400),y=t(94721),j=t(84741),Z=t(40968),C=t(37516),b=t(21435),S=t(42419),_=t(75952),N=t(76773),A=t(90673),T=t(80184),P=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},wrapperContainer:{display:"flex",marginBottom:15},envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.oO),m.AK),m.DF))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeMinIO})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeConsole})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.setDomains})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.consoleDomain})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.minioDomains})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.envVars})),P=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),I=(0,i.useState)({}),w=(0,r.Z)(I,2),k=w[0],R=w[1],F=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];if(f&&(e=[].concat((0,x.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:P.runAsUser,customValidation:""===P.runAsUser||parseInt(P.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:P.runAsGroup,customValidation:""===P.runAsGroup||parseInt(P.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:P.fsGroup,customValidation:""===P.fsGroup||parseInt(P.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),u){var n=m.map((function(e,n){return{fieldKey:"minio-domain-".concat(n.toString()),required:!1,value:e,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/,customPatternMessage:"MinIO domain is not in the form of http|https://subdomain.domain"}}));e=[].concat((0,x.Z)(e),(0,x.Z)(n),[{fieldKey:"console_domain",required:!1,value:d,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/,customPatternMessage:"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2"}])}var r=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(r).length})),R(r)}),[t,f,P,u,d,m]);var D=function(e){R((0,j.he)(k,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Configure"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Basic configurations for tenant management"})]}),(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h4",{className:n.h3Section,children:"Services"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Whether the tenant's services should request an external IP via LoadBalancer service type."})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:s,onChange:function(e){var n=e.target.checked;F("exposeMinIO",n)},label:"Expose MinIO Service"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:o,onChange:function(e){var n=e.target.checked;F("exposeConsole",n)},label:"Expose Console Service"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"custom_domains",id:"custom_domains",name:"custom_domains",checked:u,onChange:function(e){var n=e.target.checked;F("setDomains",n)},label:"Set Custom Domains"})}),u&&(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"Custom Domains for MinIO"}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{id:"console_domain",name:"console_domain",onChange:function(e){F("consoleDomain",e.target.value),D("tenant_securityContext_runAsUser")},label:"Console Domain",value:d,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",error:k.console_domain||""})}),(0,T.jsxs)("div",{children:[(0,T.jsx)("h4",{children:"MinIO Domains"}),(0,T.jsx)("div",{className:"".concat(n.responsiveSectionItem),children:m.map((function(e,r){return(0,T.jsxs)("div",{className:"".concat(n.containerItem," ").concat(n.wrapperContainer),children:[(0,T.jsx)(b.Z,{id:"minio-domain-".concat(r.toString()),name:"minio-domain-".concat(r.toString()),onChange:function(e){!function(e,n){var t=(0,x.Z)(m);t[n]=e,F("minioDomains",t)}(e.target.value,r)},label:"MinIO Domain ".concat(r+1),value:e,placeholder:"Eg. http://subdomain.domain",error:k["minio-domain-".concat(r.toString())]||""}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.x_)())},disabled:r!==m.length-1,children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.JL)(r))},disabled:m.length<=1,children:(0,T.jsx)(_.HFL,{})})})]},"minio-domain-key-".concat(r.toString()))}))})]})]})]})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:f,onChange:function(e){var n=e.target.checked;F("tenantCustom",n)},label:"Security Context"})}),f&&(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for MinIO"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsUser:e.target.value})),D("tenant_securityContext_runAsUser")},label:"Run As User",value:P.runAsUser,required:!0,error:k.tenant_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsGroup:e.target.value})),D("tenant_securityContext_runAsGroup")},label:"Run As Group",value:P.runAsGroup,required:!0,error:k.tenant_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroup:e.target.value})),D("tenant_securityContext_fsGroup")},label:"FsGroup",value:P.fsGroup,required:!0,error:k.tenant_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:P.fsGroupChangePolicy,onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:P.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})}),(0,T.jsx)(y.Z,{}),(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Additional Environment Variables"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Define additional environment variables to be used by your MinIO pods"})]}),(0,T.jsx)(c.ZP,{container:!0,children:p.map((function(e,r){return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.formFieldRow," ").concat(n.envVarRow),children:[(0,T.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,T.jsx)(b.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:function(e){var n=(0,x.Z)(p);t((0,N.Ct)(n.map((function(n,t){return t===r?{key:e.target.value,value:n.value}:n}))))},index:r},"env_var_key_".concat(r.toString()))}),(0,T.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,T.jsx)(b.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:function(e){var n=(0,x.Z)(p);t((0,N.Ct)(n.map((function(n,t){return t===r?{key:n.key,value:e.target.value}:n}))))},index:r},"env_var_value_".concat(r.toString()))}),(0,T.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=(0,x.Z)(p);e.push({key:"",value:""}),t((0,N.Ct)(e))},disabled:r!==p.length-1,children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=p.filter((function(e,n){return n!==r}));t((0,N.Ct)(e))},disabled:p.length<=1,children:(0,T.jsx)(_.HFL,{})})})]})]},"tenant-envVar-".concat(r.toString()))}))})]})})),I=t(83679),w=t(20890),k=t(20068),R=t(72455),F=t(27247),D=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),G=function(){var e=(0,h.TL)(),n=D(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADSkipTLS})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerInsecure})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchBaseDN})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchFilter})),m=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNs})),f=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupDNs})),p=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindDN})),g=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindPassword})),y=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchBaseDN})),_=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchFilter})),A=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerStartTLS})),P=(0,i.useState)({}),I=(0,r.Z)(P,2),R=I[0],G=I[1],K=(0,i.useCallback)((function(n,t){e((0,N.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),E=function(e){G((0,j.he)(R,e))};return(0,i.useEffect)((function(){var n=[];"AD"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"AD_URL",required:!0,value:a},{fieldKey:"ad_lookupBindDN",required:!0,value:p}]));var r=(0,Z.R)(n);e((0,N.NO)({pageName:"identityProvider",valid:0===Object.keys(r).length})),G(r)}),[p,t,a,u,d,m,f,e]),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){K("ADURL",e.target.value),E("AD_URL")},label:"LDAP Server Address",value:a,placeholder:"ldap-server:636",error:R.AD_URL||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:s,onChange:function(e){var n=e.target.checked;K("ADSkipTLS",n)},label:"Skip TLS Verification"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:o,onChange:function(e){var n=e.target.checked;K("ADServerInsecure",n)},label:"Server Insecure"})}),o?(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)(w.Z,{className:n.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,T.jsx)("br",{})]}):null,(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:A,onChange:function(e){var n=e.target.checked;K("ADServerStartTLS",n)},label:"Start TLS connection to AD/LDAP server"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){K("ADLookupBindDN",e.target.value),E("ad_lookupBindDN")},label:"Lookup Bind DN",value:p,placeholder:"cn=admin,dc=min,dc=io",error:R.ad_lookupBindDN||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){K("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:g,placeholder:"admin"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){K("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:y,placeholder:"dc=min,dc=io"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){K("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:_,placeholder:"(sAMAcountName=%s)"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){K("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:u,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){K("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:d,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:m.map((function(t,r){return(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)("div",{className:n.adUserDnRows,children:[(0,T.jsx)(b.Z,{id:"ad-userdn-".concat(r.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(r.toString()),value:m[r],onChange:function(n){e((0,N.hK)({index:r,userDN:n.target.value})),E("ad-userdn-".concat(r.toString()))},index:r,error:R["ad-userdn-".concat(r.toString())]||""},"csv-ad-userdn-".concat(r.toString())),(0,T.jsxs)("div",{className:n.buttonTray,children:[(0,T.jsx)(k.Z,{title:"Add User","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){e((0,N.Y$)())},children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)(k.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",style:{marginLeft:16},onClick:function(){m.length>1&&e((0,N.GU)(r))},children:(0,T.jsx)(F.Z,{})})})]})]})},"identityField-".concat(r.toString()))}))})]}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"List of group DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:f.map((function(t,r){return(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)("div",{className:n.adUserDnRows,children:[(0,T.jsx)(b.Z,{id:"ad-groupdn-".concat(r.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(r.toString()),value:f[r],onChange:function(n){e((0,N.in)({index:r,userDN:n.target.value})),E("ad-groupdn-".concat(r.toString()))},index:r,error:R["ad-groupdn-".concat(r.toString())]||""},"csv-ad-groupdn-".concat(r.toString())),(0,T.jsxs)("div",{className:n.buttonTray,children:[(0,T.jsx)(k.Z,{title:"Add Group","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){e((0,N.Fe)())},children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)(k.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",style:{marginLeft:16},onClick:function(){f.length>1&&e((0,N.Hu)(r))},children:(0,T.jsx)(F.Z,{})})})]})]})},"identityField-".concat(r.toString()))}))})]})]})},K=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),E=function(){var e=(0,h.TL)(),n=K(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDConfigurationURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClientID})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDSecretID})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDCallbackURL})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClaimName})),m=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDScopes})),f=(0,i.useState)({}),p=(0,r.Z)(f,2),g=p[0],v=p[1],y=(0,i.useCallback)((function(n,t){e((0,N.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),C=function(e){v((0,j.he)(g,e))};return(0,i.useEffect)((function(){var n=[];"OpenID"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:a},{fieldKey:"openID_clientID",required:!0,value:s},{fieldKey:"openID_secretID",required:!0,value:o},{fieldKey:"openID_claimName",required:!0,value:d}]));var r=(0,Z.R)(n);e((0,N.NO)({pageName:"identityProvider",valid:0===Object.keys(r).length})),v(r)}),[t,s,o,a,d,e]),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){y("openIDConfigurationURL",e.target.value),C("openID_CONFIGURATION_URL")},label:"Configuration URL",value:a,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:g.openID_CONFIGURATION_URL||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){y("openIDClientID",e.target.value),C("openID_clientID")},label:"Client ID",value:s,error:g.openID_clientID||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){y("openIDSecretID",e.target.value),C("openID_secretID")},label:"Secret ID",value:o,error:g.openID_secretID||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){y("openIDCallbackURL",e.target.value),C("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:g.openID_callbackURL||""})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){y("openIDClaimName",e.target.value),C("openID_claimName")},label:"Claim Name",value:d,error:g.openID_claimName||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){y("openIDScopes",e.target.value),C("openID_scopes")},label:"Scopes",value:m})})]})},L=t(22918),z=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}}},m.QV),m.DF),m.oO),m.AK))})),O=function(){var e=(0,h.TL)(),n=z(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.accessKeys})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.secretKeys})),o=(0,i.useState)({}),c=(0,r.Z)(o,2),u=c[0],d=c[1],m=function(e){d((0,j.he)(u,e))};return(0,i.useEffect)((function(){var n=[];if("Built-in"===t){n=(0,x.Z)(n);for(var r=0;r0)&&(U=!0);var B=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"encryption",field:e,value:n}))}),[t]),H=function(e){V((0,j.he)(M,e))};return(0,i.useEffect)((function(){var e=[];d&&(e=[].concat((0,x.Z)(e),[{fieldKey:"rawConfiguration",required:u>0,value:o},{fieldKey:"replicas",required:!0,value:s,customValidation:parseInt(s)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),E&&(e=[].concat((0,x.Z)(e),[{fieldKey:"serverKey",required:!w,value:F.encoded_key},{fieldKey:"serverCert",required:!w,value:F.encoded_cert},{fieldKey:"clientKey",required:!w,value:D.encoded_key},{fieldKey:"clientCert",required:!w,value:D.encoded_cert}])));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"encryption",valid:0===Object.keys(n).length})),V(n)}),[o,u,d,m,f,p,v,y,S,_,t,w,E,F.encoded_key,F.encoded_cert,D.encoded_key,D.encoded_cert,L,s]),(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Encryption"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,T.jsx)(C.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:d,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:function(e){var n=e.target.checked;B("enableEncryption",n)},description:"",disabled:!U})})]}),(0,T.jsxs)(c.ZP,{container:!0,spacing:1,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"MinIO Server-Side Encryption (SSE) protects objects as part of write operations, allowing clients to take advantage of server processing power to secure objects at the storage layer (encryption-at-rest). SSE also provides key functionality to regulatory and compliance requirements around secure locking and erasure."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),d&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)(ie.Z,{value:u,onChange:function(e,n){B("encryptionTab",n)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,T.jsx)(se.Z,{id:"kms-options",label:"Options"}),(0,T.jsx)(se.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),u?(0,T.jsx)(i.Fragment,{children:(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(oe.Z,{value:o,mode:"yaml",onBeforeChange:function(e,n,t){B("rawConfiguration",t)},editorHeight:"550px"})})}):(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.encryptionTypeOptions,children:(0,T.jsx)(I.Z,{currentSelection:m,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:function(e){B("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===m&&(0,T.jsx)($,{}),"azure"===m&&(0,T.jsx)(J,{}),"gcp"===m&&(0,T.jsx)(ee,{}),"aws"===m&&(0,T.jsx)(ae,{}),"gemalto"===m&&(0,T.jsx)(te,{})]}),(0,T.jsx)("div",{className:n.headerElement,children:(0,T.jsx)("h4",{className:n.h3Section,children:"Additional Configurations"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(C.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:P||!w,onChange:function(e){var n=e.target.checked;B("enableCustomCertsForKES",n)},label:"Custom Certificates",disabled:!w})}),(P||!w)&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{container:!0,children:(0,T.jsx)(c.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"Encryption server certificates"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.uN)({key:"key",fileName:n,value:e})),H("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:M.serverKey||"",value:F.key,required:!w}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.uN)({key:"cert",fileName:n,value:e})),H("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:M.serverCert||"",value:F.cert,required:!w})]})})}),(0,T.jsx)(c.ZP,{container:!0,style:{marginBottom:15},children:(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Ud)({key:"key",fileName:n,value:e})),H("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:M.clientKey||"",value:D.key,required:!w}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Ud)({key:"cert",fileName:n,value:e})),H("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:M.clientCert||"",value:D.cert,required:!w})]})})}),(0,T.jsx)(c.ZP,{container:!0,className:n.mutualTlsConfig,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Tr)({key:"key",fileName:n,value:e})),H("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:G.key}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Tr)({key:"cert",fileName:n,value:e})),H("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:G.cert}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.b9)({fileName:n,value:e})),H("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:K.cert})]})})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,classes:n.formFieldRow,children:(0,T.jsx)(b.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){B("replicas",e.target.value),H("replicas")},label:"Replicas",value:s,required:!0,error:M.replicas||""})}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,style:{marginTop:15},children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for KES pods"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsUser:e.target.value})),H("kes_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:M.kes_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsGroup:e.target.value})),H("kes_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:M.kes_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{fsGroup:e.target.value})),H("kes_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:M.kes_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:L.fsGroupChangePolicy,onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var n=e.target.checked;B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})]})]})]})})),ce=t(4942),ue=t(81207),de=t(45660),me=t(87995),fe=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},affinityRow:{marginBottom:10,display:"flex"}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.affinity.podAffinity})),o=(0,l.v9)((function(e){return e.createTenant.fields.affinity.nodeSelectorLabels})),u=(0,l.v9)((function(e){return e.createTenant.fields.affinity.withPodAntiAffinity})),d=(0,l.v9)((function(e){return e.createTenant.nodeSelectorPairs})),m=(0,l.v9)((function(e){return e.createTenant.tolerations})),f=(0,i.useState)({}),p=(0,r.Z)(f,2),y=p[0],j=p[1],S=(0,i.useState)(!0),P=(0,r.Z)(S,2),w=P[0],k=P[1],R=(0,i.useState)({}),F=(0,r.Z)(R,2),D=F[0],G=F[1],K=(0,i.useState)([]),E=(0,r.Z)(K,2),L=E[0],z=E[1],O=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"affinity",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){w&&ue.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){k(!1),G(e);var n=[];for(var t in e)n.push({label:t,value:t});z(n)})).catch((function(e){k(!1),t((0,me.zb)(e)),G({})}))}),[t,w]),(0,i.useEffect)((function(){if(d){var e=d.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,n,t){return t.indexOf(e)===n})).join("&");O("nodeSelectorLabels",e)}}),[d,O]),(0,i.useEffect)((function(){var e=[];if("nodeSelector"===s){var n=!0,r=o.split("&");1===r.length&&""===r[0]&&(n=!1),r.forEach((function(e,t){var a=e.split("=");2!==a.length&&(n=!1),t+1!==r.length&&(""!==a[0]&&""!==a[1]||(n=!1))})),e=[].concat((0,x.Z)(e),[{fieldKey:"labels",required:!0,value:o,customValidation:!n,customValidationMessage:"You need to add at least one label key-pair"}])}var a=(0,Z.R)(e);t((0,N.NO)({pageName:"affinity",valid:0===Object.keys(a).length})),j(a)}),[t,s,o]);var M=function(e,n,r){var i=(0,a.Z)((0,a.Z)({},m[e]),{},(0,ce.Z)({},n,r));t((0,N.iU)({index:e,tolerationValue:i}))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Pod Placement"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,T.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,T.jsx)("div",{className:n.label,children:"Type"}),(0,T.jsx)("div",{className:"".concat(n.descriptionText," ").concat(n.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,T.jsx)(c.ZP,{item:!0,className:n.radioField,children:(0,T.jsx)(I.Z,{currentSelection:s,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){O("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===s&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(C.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:u,onChange:function(e){var n=e.target.checked;O("withPodAntiAffinity",n)},label:"With Pod Anti-Affinity"})}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)("h3",{children:"Labels"}),(0,T.jsx)("span",{className:n.error,children:y.labels}),(0,T.jsx)(c.ZP,{container:!0,children:d&&d.map((function(e,r){return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,T.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelKey,children:[L.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var n=e.target.value,a={key:n,value:D[n][0]},i=(0,x.Z)(d);i[r]=a,t((0,N.i$)(i))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:L}),0===L.length&&(0,T.jsx)(b.Z,{id:"nodeselector-key-".concat(r.toString()),label:"",name:"nodeselector-".concat(r.toString()),value:e.key,onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},index:r,placeholder:"Key"})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelValue,children:[L.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:D[e.key]?D[e.key].map((function(e){return{label:e,value:e}})):[]}),0===L.length&&(0,T.jsx)(b.Z,{id:"nodeselector-value-".concat(r.toString()),label:"",name:"nodeselector-".concat(r.toString()),value:e.value,onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},index:r,placeholder:"value"})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=(0,x.Z)(d);L.length>0?e.push({key:L[0].value,value:D[L[0].value][0]}):e.push({key:"",value:""}),t((0,N.i$)(e))},disabled:r!==d.length-1,children:(0,T.jsx)(_.dtP,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=d.filter((function(e,n){return n!==r}));t((0,N.i$)(e))},disabled:d.length<=1,children:(0,T.jsx)(_.HFL,{})})})]})]},"affinity-keyVal-".concat(r.toString()))}))})]})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,T.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,T.jsx)("h3",{children:"Tolerations"}),(0,T.jsx)("span",{className:n.error,children:y.tolerations}),(0,T.jsx)(c.ZP,{container:!0,children:m&&m.map((function(e,r){var a;return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,T.jsx)(de.Z,{effect:e.effect,onEffectChange:function(e){M(r,"effect",e)},tolerationKey:e.key,onTolerationKeyChange:function(e){M(r,"key",e)},operator:e.operator,onOperatorChange:function(e){M(r,"operator",e)},value:e.value,onValueChange:function(e){M(r,"value",e)},tolerationSeconds:(null===(a=e.tolerationSeconds)||void 0===a?void 0:a.seconds)||0,onSecondsChange:function(e){M(r,"tolerationSeconds",{seconds:e})},index:r}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){t((0,N.ly)())},disabled:r!==m.length-1,children:(0,T.jsx)(_.dtP,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.JX)(r))},disabled:m.length<=1,children:(0,T.jsx)(_.HFL,{})})})]},"affinity-keyVal-".concat(r.toString()))}))})]})})]})})),he=t(32291),xe=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.configure.customImage})),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageName})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.customDockerhub})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistry})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryUsername})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryPassword})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusEnabled})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),v=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchEnabled})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchVolumeSize})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusVolumeSize})),_=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSelectedStorageClass})),A=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchImage})),P=(0,l.v9)((function(e){return e.createTenant.fields.configure.kesImage})),I=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresImage})),w=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresInitImage})),k=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSelectedStorageClass})),R=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusImage})),F=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSidecarImage})),D=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusInitImage})),G=(0,i.useState)({}),K=(0,r.Z)(G,2),E=K[0],L=K[1],z=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];f&&(e=[].concat((0,x.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:k,customValidation:""===k,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:S,customValidation:""===S||parseInt(S)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),v&&(e=[].concat((0,x.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:_,customValidation:""===_,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),a&&(e=[].concat((0,x.Z)(e),[{fieldKey:"image",required:!1,value:s,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/operator:VERSION'"},{fieldKey:"kesImage",required:!1,value:P,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:I,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:w,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:R,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"registry",required:!0,value:u},{fieldKey:"registryUsername",required:!0,value:d},{fieldKey:"registryPassword",required:!0,value:m}])));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),L(n)}),[a,s,A,P,I,w,R,F,D,o,u,d,m,t,f,p,v,k,S,_,y]);var O=function(e){L((0,j.he)(E,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Container Images"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Specify the container images used by the Tenant and it's features."})]}),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"image",name:"image",onChange:function(e){z("imageName",e.target.value),O("image")},label:"MinIO",value:s,error:E.image||"",placeholder:"minio/minio:RELEASE.2022-02-26T02-54-46Z"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"kesImage",name:"kesImage",onChange:function(e){z("kesImage",e.target.value),O("kesImage")},label:"KES",value:P,error:E.kesImage||"",placeholder:"minio/kes:v0.17.6"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Log Search"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){z("logSearchImage",e.target.value),O("logSearchImage")},label:"API",value:A,error:E.logSearchImage||"",placeholder:"minio/operator:v4.4.22"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){z("logSearchPostgresImage",e.target.value),O("logSearchPostgresImage")},label:"PostgreSQL",value:I,error:E.logSearchPostgresImage||"",placeholder:"library/postgres:13"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){z("logSearchPostgresInitImage",e.target.value),O("logSearchPostgresInitImage")},label:"PostgreSQL Init",value:w,error:E.logSearchPostgresInitImage||"",placeholder:"library/busybox:1.33.1"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Monitoring"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){z("prometheusImage",e.target.value),O("prometheusImage")},label:"Prometheus",value:R,error:E.prometheusImage||"",placeholder:"quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){z("prometheusSidecarImage",e.target.value),O("prometheusSidecarImage")},label:"Prometheus Sidecar",value:F,error:E.prometheusSidecarImage||"",placeholder:"library/alpine:latest"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){z("prometheusInitImage",e.target.value),O("prometheusInitImage")},label:"Prometheus Init",value:D,error:E.prometheusInitImage||"",placeholder:"library/busybox:1.33.1"})})]}),a&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Custom Container Registry"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:o,onChange:function(e){var n=e.target.checked;z("customDockerhub",n)},label:"Use a private container registry"})})]}),o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registry",name:"registry",onChange:function(e){z("imageRegistry",e.target.value)},label:"Endpoint",value:u,error:E.registry||"",placeholder:"https://index.docker.io/v1/",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){z("imageRegistryUsername",e.target.value)},label:"Username",value:d,error:E.registryUsername||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){z("imageRegistryPassword",e.target.value)},label:"Password",value:m,error:E.registryPassword||"",required:!0})})]})]})})),pe=t(74794),ge=t(84669),ve=t(79836),ye=t(53382),je=t(53994),Ze=t(35855),Ce=t(45248),be=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.nodes})),r=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesMemoryRequest})),a=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParity})),s=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.distribution})),o=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParityCalc})),c=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesCPURequest})),u=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.integrationSelection})),d=o.storageFactors.find((function(e){return e.erasureCode===a}));return(0,T.jsxs)("div",{className:n.root,children:[(0,T.jsx)("h4",{children:"Resource Allocation"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ve.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ye.Z,{children:[(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Number of Servers"}),(0,T.jsx)(je.Z,{align:"right",children:parseInt(t)>0?t:"-"})]}),""===u.typeSelection&&""===u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(je.Z,{align:"right",children:s?s.disks:"-"})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Drive Capacity"}),(0,T.jsx)(je.Z,{align:"right",children:s?(0,Ce.ae)(s.pvSize):"-"})]})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Total Volumes"}),(0,T.jsx)(je.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===u.typeSelection&&""===u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Memory per Node"}),(0,T.jsxs)(je.Z,{align:"right",children:[r," Gi"]})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,T.jsx)(je.Z,{style:{borderBottom:0},align:"right",children:c})]})]})]})}),0===o.error&&d&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("h4",{children:"Erasure Code Configuration"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ve.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ye.Z,{children:[(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"EC Parity"}),(0,T.jsx)(je.Z,{align:"right",children:""!==a?a:"-"})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Raw Capacity"}),(0,T.jsx)(je.Z,{align:"right",children:(0,Ce.ae)(o.rawCapacity)})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Usable Capacity"}),(0,T.jsx)(je.Z,{align:"right",children:(0,Ce.ae)(d.maxCapacity)})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,T.jsx)(je.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(d.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==u.typeSelection&&""!==u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("h4",{children:"Single Instance Configuration"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ve.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ye.Z,{children:[(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"CPU"}),(0,T.jsx)(je.Z,{align:"right",children:0!==u.CPU?u.CPU:"-"})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Memory"}),(0,T.jsx)(je.Z,{align:"right",children:0!==u.memory?"".concat(u.memory," Gi"):"-"})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(je.Z,{align:"right",children:0!==u.drivesPerServer?"".concat(u.drivesPerServer):"-"})]}),(0,T.jsxs)(Ze.Z,{children:[(0,T.jsx)(je.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,T.jsxs)(je.Z,{style:{borderBottom:0},align:"right",children:[u.driveSize.driveSize,u.driveSize.sizeUnit]})]})]})})]})]})})),Se=t(19720),_e=t(45884),Ne=t(46078),Ae=t(51691),Te=t(23508),Pe=t(98222),Ie=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},m.oO),m.Qw))})),we=function(){var e=(0,h.TL)(),n=Ie(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),r=(0,l.v9)((function(e){return e.createTenant.addNSLoading})),a=(0,l.v9)((function(e){return e.createTenant.addNSOpen}));return(0,T.jsx)(Te.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{variant:"callAction"},isOpen:a,titleIcon:(0,T.jsx)(_.EjK,{}),isLoading:r,onConfirm:function(){e((0,Pe.QD)())},onClose:function(){e((0,N.pb)())},confirmationContent:(0,T.jsxs)(i.Fragment,{children:[r&&(0,T.jsx)(u.Z,{}),(0,T.jsxs)(Ae.Z,{children:["Are you sure you want to add a namespace called",(0,T.jsx)("br",{}),(0,T.jsx)("b",{className:n.wrapText,children:t}),"?"]})]})})},ke=t(48573),Re=t.n(ke),Fe=function(e){e.formToRender;var n=(0,h.TL)(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),r=(0,l.v9)((function(e){return e.createTenant.showNSCreateButton})),a=(0,l.v9)((function(e){return e.createTenant.validationErrors.namespace})),s=(0,l.v9)((function(e){return e.createTenant.addNSOpen})),o=(0,i.useMemo)((function(){return Re()((function(){n((0,Pe.IO)())}),500)}),[n]);(0,i.useEffect)((function(){if(""!==t)return o(),o.cancel}),[o,t]);return(0,T.jsxs)(i.Fragment,{children:[s&&(0,T.jsx)(we,{}),(0,T.jsx)(b.Z,{id:"namespace",name:"namespace",onChange:function(e){n((0,N.Zx)(e.target.value))},label:"Namespace",value:t,error:a||"",overlayId:"add-namespace",overlayIcon:r?(0,T.jsx)(_.dtP,{}):null,overlayAction:function(){n((0,N.Oj)())},required:!0})]})},De=function(){var e=(0,h.TL)(),n=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.tenantName})),t=(0,l.v9)((function(e){return e.createTenant.validationErrors["tenant-name"]}));return(0,T.jsx)(b.Z,{id:"tenant-name",name:"tenant-name",onChange:function(n){e((0,N.V7)(n.target.value))},label:"Name",value:n,required:!0,error:t||""})},Ge=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({sizePreview:{marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2,marginTop:20}},m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=e.formToRender,r=(0,h.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),s=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageType})),u=(0,l.v9)((function(e){return e.createTenant.storageClasses})),d=(0,l.v9)(Ne.$4),m=(0,i.useCallback)((function(e,n){r((0,N.HM)({pageName:"nameTenant",field:e,value:n}))}),[r]);return(0,i.useEffect)((function(){var e=t===_e.cy.default&&u.length>0||t!==_e.cy.default&&""!==s;r((0,N.NO)({pageName:"nameTenant",valid:e}))}),[u,r,s,t]),(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)(c.ZP,{container:!0,children:[(0,T.jsx)(c.ZP,{item:!0,sx:{width:"calc(100% - 300px)"},children:(0,T.jsx)(g.Z,{className:n.paperWrapper,sx:{minHeight:550},children:(0,T.jsxs)(c.ZP,{container:!0,children:[(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Name"}),(0,T.jsx)("span",{className:n.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,T.jsx)("div",{className:n.formFieldRow,children:(0,T.jsx)(De,{})})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(Fe,{formToRender:t})}),t===_e.cy.default?(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){m("selectedStorageClass",e.target.value)},label:"Storage Class",value:a,options:u,disabled:u.length<1})}):(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){r((0,N.Qy)({storageType:e.target.value,features:d}))},label:o()(_e.Hd,"".concat(t,".variantSelectorLabel"),"Storage Type"),value:s,options:o()(_e.Hd,"".concat(t,".variantSelectorValues"),[])})}),t===_e.cy.default?(0,T.jsx)(Se.Z,{}):o()(_e.Hd,"".concat(t,".sizingComponent"),null)]})})}),(0,T.jsx)(c.ZP,{item:!0,children:(0,T.jsx)("div",{className:n.sizePreview,children:(0,T.jsx)(be,{})})})]})})})),Ke=function(){var e=(0,l.v9)(Ne.$4),n=(0,i.useState)(null),t=(0,r.Z)(n,2),a=t[0],s=t[1];return(0,i.useEffect)((function(){var n=_e.cy.default;e&&0!==e.length&&Object.keys(_e.I8).forEach((function(t){e.includes(t)&&(n=o()(_e.I8,t,_e.cy.default))}));s(n)}),[e]),null===a?null:(0,T.jsx)(Ge,{formToRender:a})},Ee=t(56578),Le=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchEnabledFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.storageClasses})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchEnabled})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchVolumeSize})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSelectedStorageClass})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchImage})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresImage})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresInitImage})),v=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSecurityContext})),_=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresSecurityContext})),P=(0,i.useState)({}),I=(0,r.Z)(P,2),w=I[0],k=I[1],R=[{label:"Default",value:"default"}].concat((0,x.Z)(s)),F=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:d,customValidation:""===d,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:u,customValidation:""===u||parseInt(u)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:S.runAsUser,customValidation:""===S.runAsUser||parseInt(S.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===S.runAsGroup||parseInt(S.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:S.fsGroup,customValidation:""===S.fsGroup||parseInt(S.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:_.runAsUser,customValidation:""===_.runAsUser||parseInt(_.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===_.runAsGroup||parseInt(_.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:_.fsGroup,customValidation:""===_.fsGroup||parseInt(_.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),k(n)}),[m,f,p,t,o,d,u,y,S,_]),(0,i.useEffect)((function(){s.length>0&&(0===s.filter((function(e){return e.value===d})).length&&F("logSearchSelectedStorageClass","default"))}),[d,v,s,F]);var D=function(e){k((0,j.he)(w,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Audit Log"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,children:(0,T.jsx)(C.Z,{value:"enableLogging",id:"enableLogging",name:"enableLogging",checked:o,onChange:function(e){var n=e.target.checked;F("logSearchEnabled",n)},indicatorLabels:["Enabled","Disabled"]})})]}),(0,T.jsxs)(c.ZP,{container:!0,spacing:1,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"Deploys a small PostgreSQL database and stores access logs of all calls into the tenant."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){F("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:d,options:R,disabled:R.length<1})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(b.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){F("logSearchVolumeSize",e.target.value),D("log_search_volume_size")},label:"Storage Size",overlayObject:(0,T.jsx)(Ee.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:u,required:!0,error:w.log_search_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(n.fieldGroup," ").concat(n.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for LogSearch"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsUser:e.target.value})),D("logSearch_securityContext_runAsUser")},label:"Run As User",value:S.runAsUser,required:!0,error:w.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsGroup:e.target.value})),D("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:S.runAsGroup,required:!0,error:w.logSearch_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroup:e.target.value})),D("logSearch_securityContext_fsGroup")},label:"FsGroup",value:S.fsGroup,required:!0,error:w.logSearch_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:S.fsGroupChangePolicy,onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:S.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsUser:e.target.value})),D("postgres_securityContext_runAsUser")},label:"Run As User",value:_.runAsUser,required:!0,error:w.postgres_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsGroup:e.target.value})),D("postgres_securityContext_runAsGroup")},label:"Run As Group",value:_.runAsGroup,required:!0,error:w.postgres_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{fsGroup:e.target.value})),D("postgres_securityContext_fsGroup")},label:"FsGroup",value:_.fsGroup,required:!0,error:w.postgres_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:_.fsGroupChangePolicy,onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:_.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})]})]})})),ze=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},fieldSpaceTop:{marginTop:15},prometheusEnabledFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.storageClasses})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusEnabled})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusVolumeSize})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSelectedStorageClass})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusImage})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSidecarImage})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusInitImage})),v=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSecurityContext})),_=(0,i.useState)({}),P=(0,r.Z)(_,2),I=P[0],w=P[1],k=[{label:"Default",value:"default"}].concat((0,x.Z)(s)),R=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:d,customValidation:""===d,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:u,customValidation:""===u||parseInt(u)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:S.runAsUser,customValidation:""===S.runAsUser||parseInt(S.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===S.runAsGroup||parseInt(S.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:S.fsGroup,customValidation:""===S.fsGroup||parseInt(S.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),w(n)}),[m,f,p,t,o,d,u,y,S]),(0,i.useEffect)((function(){s.length>0&&(0===s.filter((function(e){return e.value===d})).length&&R("prometheusSelectedStorageClass","default"))}),[d,v,s,R]);var F=function(e){w((0,j.he)(I,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Monitoring"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,children:(0,T.jsx)(C.Z,{indicatorLabels:["Enabled","Disabled"],checked:o,value:"monitoring_status",id:"monitoring-status",name:"monitoring-status",onChange:function(e){var n=e.target.checked;R("prometheusEnabled",n)},description:""})})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"A small Prometheus will be deployed to keep metrics about the tenant."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),(0,T.jsx)(c.ZP,{container:!0,spacing:1,children:o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){R("prometheusSelectedStorageClass",e.target.value)},label:"Storage Class",value:d,options:k,disabled:k.length<1})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){R("prometheusVolumeSize",e.target.value),F("prometheus_volume_size")},label:"Storage Size",overlayObject:(0,T.jsx)(Ee.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:u,required:!0,error:I.prometheus_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(n.fieldGroup," ").concat(n.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsUser:e.target.value})),F("prometheus_securityContext_runAsUser")},label:"Run As User",value:S.runAsUser,required:!0,error:I.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsGroup:e.target.value})),F("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:S.runAsGroup,required:!0,error:I.prometheus_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroup:e.target.value})),F("prometheus_securityContext_fsGroup")},label:"FsGroup",value:S.fsGroup,required:!0,error:I.prometheus_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:S.fsGroupChangePolicy,onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)("div",{className:"".concat(n.multiContainer," ").concat(n.fieldSpaceTop),children:(0,T.jsx)(C.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:S.runAsNonRoot,onChange:function(e){var n=e.target.checked;R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})})]})})),Oe=t(23804),Me=["nameTenant","tenantSize","configure","affinity","identityProvider","security","encryption"],Ve=t(84218),Ue=function(){var e=(0,h.TL)(),n=(0,l.v9)((function(e){return e.createTenant.addingTenant})),t=(0,l.v9)((function(e){return e.createTenant.validPages})),r=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),a=!n&&""!==r&&Me.every((function(e){return t.includes(e)}));return(0,T.jsx)(_.zxk,{id:"wizard-button-Create",variant:"callAction",color:"primary",onClick:function(){e((0,Ve.e)())},disabled:!a,label:"Create"},"button-AddTenant-Create")},qe=t(37798),Be=t(57689),He=function(){var e=(0,h.TL)(),n=(0,Be.s0)(),t=(0,l.v9)((function(e){return e.createTenant.showNewCredentials})),r=(0,l.v9)((function(e){return e.createTenant.createdAccount}));return(0,T.jsx)(i.Fragment,{children:t&&(0,T.jsx)(qe.default,{newServiceAccount:r,open:t,closeModal:function(){e((0,N.dS)()),n("/tenants")},entity:"Tenant"})})},We=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({pageBox:{border:"1px solid #EAEAEA"}},m.oO),m.AK),m.Je))})),Qe=function(){var e=(0,h.TL)(),n=(0,Be.s0)(),t=We(),a=(0,l.v9)(Ne.$4),s=(0,l.v9)((function(e){return e.createTenant.addingTenant})),d=(0,i.useState)(null),m=(0,r.Z)(d,2),x=m[0],p=m[1];(0,i.useEffect)((function(){var e=_e.cy.default;a&&0!==a.length&&Object.keys(_e.I8).forEach((function(n){a.includes(n)&&(e=o()(_e.I8,n,_e.cy.default))}));p(e)}),[a]);var g={label:"Cancel",type:"other",enabled:!0,action:function(){e((0,N.dS)()),n("/tenants")}},v={componentRender:(0,T.jsx)(Ue,{},"create-tenant")},y=[{label:"Setup",componentRender:(0,T.jsx)(Ke,{}),buttons:[g,v]},{label:"Configure",advancedOnly:!0,componentRender:(0,T.jsx)(P,{}),buttons:[g,v]},{label:"Images",advancedOnly:!0,componentRender:(0,T.jsx)(xe,{}),buttons:[g,v]},{label:"Pod Placement",advancedOnly:!0,componentRender:(0,T.jsx)(fe,{}),buttons:[g,v]},{label:"Identity Provider",advancedOnly:!0,componentRender:(0,T.jsx)(U,{}),buttons:[g,v]},{label:"Security",advancedOnly:!0,componentRender:(0,T.jsx)(H,{}),buttons:[g,v]},{label:"Encryption",advancedOnly:!0,componentRender:(0,T.jsx)(le,{}),buttons:[g,v]},{label:"Audit Log",advancedOnly:!0,componentRender:(0,T.jsx)(Le,{}),buttons:[g,v]},{label:"Monitoring",advancedOnly:!0,componentRender:(0,T.jsx)(ze,{}),buttons:[g,v]}];return(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(He,{}),(0,T.jsx)(he.Z,{label:(0,T.jsx)(ge.Z,{to:"/tenants",label:"Tenants",executeOnClick:function(){e((0,N.dS)())}})}),(0,T.jsxs)(pe.Z,{children:[s&&(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(u.Z,{})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:t.pageBox,children:(0,T.jsx)(f.Z,{wizardSteps:y})}),x===_e.cy.aws&&(0,T.jsx)(c.ZP,{item:!0,xs:12,style:{marginTop:16},children:(0,T.jsx)(Oe.Z,{title:"EBS Volume Configuration.",iconComponent:(0,T.jsx)(_.idV,{}),help:(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("b",{children:"Performance Optimized"}),": Uses the ",(0,T.jsx)("i",{children:"gp3"})," EBS storage class class configured at 1,000Mi/s throughput and 16,000 IOPS, however the minimum volume size for this type of EBS volume is ",(0,T.jsx)("b",{children:"32Gi"}),".",(0,T.jsx)("br",{}),(0,T.jsx)("br",{}),(0,T.jsx)("b",{children:"Storage Optimized"}),": Uses the ",(0,T.jsx)("i",{children:"sc1"})," EBS storage class, however the minimum volume size for this type of EBS volume is \xa0",(0,T.jsx)("b",{children:"16Ti"})," to unlock their maximum throughput speed of 250Mi/s."]})})})]})]})}},88070:function(e,n,t){t(72791);var r=t(78687),a=t(64554),i=t(75952),s=t(57689),o=t(80184),l=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(a.Z,{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(){var e=(0,s.UO)(),n=e.tenantName||"",t=e.tenantNamespace||"",c=(0,r.v9)((function(e){return""!==t?t:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:""})),u=(0,r.v9)((function(e){return""!==n?n:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""}));return(0,o.jsx)(a.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,o.jsxs)(a.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,o.jsx)(l,{icon:(0,o.jsx)(i.Baz,{}),description:"TLS Certificates Warning"}),(0,o.jsxs)(a.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"If you wish to continue only with ",(0,o.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",c,(0,o.jsx)("br",{}),"minio.",c,".svc",(0,o.jsx)("br",{}),"minio.",c,".svc.",(0,o.jsx)("br",{}),"*.",u,"-hl.",c,".svc.",(0,o.jsx)("br",{}),"*.",c,".svc."]}),(0,o.jsx)("br",{}),"Replace ",(0,o.jsx)("em",{children:""}),","," ",(0,o.jsx)("em",{children:""})," and",(0,o.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"You can learn more at our"," ",(0,o.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noreferrer",children:"documentation"}),"."]})]})})}},68456:function(e,n,t){t.d(n,{QT:function(){return o},YH:function(){return l},mo:function(){return s}});var r=t(61889),a=t(75952),i=t(80184),s=function(){return(0,i.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(r.ZP,{children:(0,i.jsx)(a.gyG,{width:"16px",height:"16px"})}),(0,i.jsx)(r.ZP,{item:!0,children:"Open ID"})]})},o=function(){return(0,i.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(r.ZP,{children:(0,i.jsx)(a.vcZ,{width:"16px",height:"16px"})}),(0,i.jsx)(r.ZP,{item:!0,children:"LDAP / Active Directory"})]})},l=function(){return(0,i.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,i.jsx)(r.ZP,{children:(0,i.jsx)(a.oyc,{width:"16px",height:"16px"})}),(0,i.jsx)(r.ZP,{item:!0,children:"Built-in"})]})}},22512:function(e,n,t){var r=t(72791),a=t(20890),i=t(11135),s=t(25787),o=t(80184);n.Z=(0,s.Z)((function(e){var n;return(0,i.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,i=e.withBreak,s=void 0===i||i;return(0,o.jsxs)(r.Fragment,{children:[s&&(0,o.jsx)("br",{}),(0,o.jsx)(a.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=s},99663:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");n.Z=s},86711:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");n.Z=s},22918:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z"}),"Casino");n.Z=s},27247:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");n.Z=s},94721:function(e,n,t){var r=t(63366),a=t(87462),i=t(72791),s=t(28182),o=t(94419),l=t(12065),c=t(66934),u=t(31402),d=t(90133),m=t(80184),f=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],h=(0,c.ZP)("div",{name:"MuiDivider",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.absolute&&n.absolute,n[t.variant],t.light&&n.light,"vertical"===t.orientation&&n.vertical,t.flexItem&&n.flexItem,t.children&&n.withChildren,t.children&&"vertical"===t.orientation&&n.withChildrenVertical,"right"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignRight,"left"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignLeft]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(n.vars||n).palette.divider,borderBottomWidth:"thin"},t.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},t.light&&{borderColor:n.vars?"rgba(".concat(n.vars.palette.dividerChannel," / 0.08)"):(0,l.Fq)(n.palette.divider,.08)},"inset"===t.variant&&{marginLeft:72},"middle"===t.variant&&"horizontal"===t.orientation&&{marginLeft:n.spacing(2),marginRight:n.spacing(2)},"middle"===t.variant&&"vertical"===t.orientation&&{marginTop:n.spacing(1),marginBottom:n.spacing(1)},"vertical"===t.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},t.flexItem&&{alignSelf:"stretch",height:"auto"})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{position:"relative",width:"100%",borderTop:"thin solid ".concat((n.vars||n).palette.divider),top:"50%",content:'""',transform:"translateY(50%)"}})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&"vertical"===t.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",top:"0%",left:"50%",borderTop:0,borderLeft:"thin solid ".concat((n.vars||n).palette.divider),transform:"translateX(0%)"}})}),(function(e){var n=e.ownerState;return(0,a.Z)({},"right"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})})),x=(0,c.ZP)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:function(e,n){var t=e.ownerState;return[n.wrapper,"vertical"===t.orientation&&n.wrapperVertical]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({display:"inline-block",paddingLeft:"calc(".concat(n.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(n.spacing(1)," * 1.2)")},"vertical"===t.orientation&&{paddingTop:"calc(".concat(n.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(n.spacing(1)," * 1.2)")})})),p=i.forwardRef((function(e,n){var t=(0,u.Z)({props:e,name:"MuiDivider"}),i=t.absolute,l=void 0!==i&&i,c=t.children,p=t.className,g=t.component,v=void 0===g?c?"div":"hr":g,y=t.flexItem,j=void 0!==y&&y,Z=t.light,C=void 0!==Z&&Z,b=t.orientation,S=void 0===b?"horizontal":b,_=t.role,N=void 0===_?"hr"!==v?"separator":void 0:_,A=t.textAlign,T=void 0===A?"center":A,P=t.variant,I=void 0===P?"fullWidth":P,w=(0,r.Z)(t,f),k=(0,a.Z)({},t,{absolute:l,component:v,flexItem:j,light:C,orientation:S,role:N,textAlign:T,variant:I}),R=function(e){var n=e.absolute,t=e.children,r=e.classes,a=e.flexItem,i=e.light,s=e.orientation,l=e.textAlign,c={root:["root",n&&"absolute",e.variant,i&&"light","vertical"===s&&"vertical",a&&"flexItem",t&&"withChildren",t&&"vertical"===s&&"withChildrenVertical","right"===l&&"vertical"!==s&&"textAlignRight","left"===l&&"vertical"!==s&&"textAlignLeft"],wrapper:["wrapper","vertical"===s&&"wrapperVertical"]};return(0,o.Z)(c,d.V,r)}(k);return(0,m.jsx)(h,(0,a.Z)({as:v,className:(0,s.Z)(R.root,p),role:N,ref:n,ownerState:k},w,{children:c?(0,m.jsx)(x,{className:R.wrapper,ownerState:k,children:c}):null}))}));n.Z=p}}]);
+//# sourceMappingURL=1275.1d84ee6a.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1275.1d84ee6a.chunk.js.map b/portal-ui/build/static/js/1275.1d84ee6a.chunk.js.map
new file mode 100644
index 000000000..1f2c6b490
--- /dev/null
+++ b/portal-ui/build/static/js/1275.1d84ee6a.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1275.1d84ee6a.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Tenants/AddTenant/Steps/Configure.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPActiveDirectory.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPOpenID.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPBuiltIn.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider.tsx","screens/Console/Tenants/AddTenant/Steps/Security.tsx","screens/Console/Common/SectionH1.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AWSKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption.tsx","screens/Console/Tenants/AddTenant/Steps/Affinity.tsx","screens/Console/Tenants/AddTenant/Steps/Images.tsx","screens/Console/Tenants/AddTenant/Steps/SizePreview.tsx","screens/Console/Tenants/AddTenant/Steps/helpers/AddNamespaceModal.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NamespaceSelector.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NameTenantMain.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantResources.tsx","screens/Console/Tenants/AddTenant/Steps/ConfigLogSearch.tsx","screens/Console/Tenants/AddTenant/Steps/ConfigPrometheus.tsx","screens/Console/Tenants/AddTenant/common.ts","screens/Console/Tenants/AddTenant/CreateTenantButton.tsx","screens/Console/Tenants/AddTenant/NewTenantCredentials.tsx","screens/Console/Tenants/AddTenant/AddTenant.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/LogoComponents.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/Casino.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/@mui/material/Divider/Divider.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"mds\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n \n
{label}:
\n
\n \n \n \n {}}\n onMouseDown={() => {}}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={ }\n />\n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport { WarnIcon } from \"mds\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"mds\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n })\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n })\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={\n \n
New {entity} Created
\n
\n }\n titleIcon={ }\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n \n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n >\n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n >\n )}\n \n \n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n >\n )}\n {idp ? (\n \n Please Login via the configured external identity provider.\n
\n ) : (\n \n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n {!idp && (\n <>\n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n >\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"mds\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport { HelpIcon } from \"mds\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n \n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n \n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n \n
{value}
\n
{\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n Divider,\n Grid,\n IconButton,\n Paper,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n formFieldStyles,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addNewMinIODomain,\n isPageValid,\n removeMinIODomain,\n setEnvVars,\n updateAddField,\n} from \"../createTenantSlice\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n wrapperContainer: {\n display: \"flex\",\n marginBottom: 15,\n },\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...modalBasic,\n ...wizardCommon,\n ...formFieldStyles,\n });\n\nconst Configure = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const exposeMinIO = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeMinIO\n );\n const exposeConsole = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeConsole\n );\n const setDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.setDomains\n );\n const consoleDomain = useSelector(\n (state: AppState) => state.createTenant.fields.configure.consoleDomain\n );\n const minioDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.minioDomains\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom\n );\n const tenantEnvVars = useSelector(\n (state: AppState) => state.createTenant.fields.configure.envVars\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (setDomains) {\n const minioExtraValidations = minioDomains.map((validation, index) => {\n return {\n fieldKey: `minio-domain-${index.toString()}`,\n required: false,\n value: validation,\n pattern: /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n customPatternMessage:\n \"MinIO domain is not in the form of http|https://subdomain.domain\",\n };\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n ...minioExtraValidations,\n {\n fieldKey: \"console_domain\",\n required: false,\n value: consoleDomain,\n pattern:\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n customPatternMessage:\n \"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n dispatch,\n tenantCustom,\n tenantSecurityContext,\n setDomains,\n consoleDomain,\n minioDomains,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const copyDomains = [...minioDomains];\n copyDomains[index] = value;\n\n updateField(\"minioDomains\", copyDomains);\n };\n\n return (\n \n \n
Configure \n \n Basic configurations for tenant management\n \n \n \n
Services \n \n Whether the tenant's services should request an external IP via\n LoadBalancer service type.\n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeMinIO\", checked);\n }}\n label={\"Expose MinIO Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeConsole\", checked);\n }}\n label={\"Expose Console Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"setDomains\", checked);\n }}\n label={\"Set Custom Domains\"}\n />\n \n {setDomains && (\n \n \n \n Custom Domains for MinIO\n \n \n \n ) => {\n updateField(\"consoleDomain\", e.target.value);\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n error={validationErrors[\"console_domain\"] || \"\"}\n />\n
\n \n
MinIO Domains \n
\n {minioDomains.map((domain, index) => {\n return (\n
\n
\n ) => {\n updateMinIODomain(e.target.value, index);\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n error={\n validationErrors[\n `minio-domain-${index.toString()}`\n ] || \"\"\n }\n />\n \n
dispatch(addNewMinIODomain())}\n disabled={index !== minioDomains.length - 1}\n >\n \n \n
\n\n \n dispatch(removeMinIODomain(index))}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n \n );\n })}\n
\n
\n \n \n \n )}\n\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"tenantCustom\", checked);\n }}\n label={\"Security Context\"}\n />\n \n {tenantCustom && (\n \n \n \n SecurityContext for MinIO\n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={tenantSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={tenantSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={tenantSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n\n \n
Additional Environment Variables \n \n Define additional environment variables to be used by your MinIO pods\n \n \n \n {tenantEnvVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair\n )\n )\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair\n )\n )\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n />\n \n \n \n
{\n const existingEnvVars = [...tenantEnvVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={index !== tenantEnvVars.length - 1}\n >\n \n \n
\n \n {\n const existingEnvVars = tenantEnvVars.filter(\n (item, fIndex) => fIndex !== index\n );\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={tenantEnvVars.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(Configure);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n addIDPADUsrAtIndex,\n isPageValid,\n removeIDPADUsrAtIndex,\n setIDPADUsrAtIndex,\n updateAddField,\n addIDPADGroupAtIndex,\n removeIDPADGroupAtIndex,\n setIDPADGroupAtIndex,\n} from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { clearValidationError } from \"../../../utils\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPActiveDirectory = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const ADURL = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADURL\n );\n const ADSkipTLS = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADSkipTLS\n );\n const ADServerInsecure = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerInsecure\n );\n const ADGroupSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchBaseDN\n );\n const ADGroupSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchFilter\n );\n const ADUserDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADUserDNs\n );\n const ADGroupDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADGroupDNs\n );\n const ADLookupBindDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindDN\n );\n const ADLookupBindPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindPassword\n );\n const ADUserDNSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchBaseDN\n );\n const ADUserDNSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchFilter\n );\n const ADServerStartTLS = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerStartTLS\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"AD\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n ADLookupBindDN,\n idpSelection,\n ADURL,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADUserDNs,\n ADGroupDNs,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"ADURL\", e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADSkipTLS\", checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerInsecure\", checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be unencrypted\n \n \n \n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerStartTLS\", checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n updateField(\"ADLookupBindDN\", e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"ADLookupBindPassword\", e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchBaseDN\", e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchFilter\", e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchBaseDN\", e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchFilter\", e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n \n \n List of user DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPADUsrAtIndex({\n index: index,\n userDN: e.target.value,\n })\n );\n cleanValidation(`ad-userdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[`ad-userdn-${index.toString()}`] || \"\"\n }\n />\n \n
\n {\n dispatch(addIDPADUsrAtIndex());\n }}\n >\n \n \n \n
\n {\n if (ADUserDNs.length > 1) {\n dispatch(removeIDPADUsrAtIndex(index));\n }\n }}\n >\n \n \n \n
\n \n \n );\n })}\n \n \n \n \n List of group DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPADGroupAtIndex({\n index: index,\n userDN: e.target.value,\n })\n );\n cleanValidation(`ad-groupdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[`ad-groupdn-${index.toString()}`] || \"\"\n }\n />\n \n
\n {\n dispatch(addIDPADGroupAtIndex());\n }}\n >\n \n \n \n
\n {\n if (ADGroupDNs.length > 1) {\n dispatch(removeIDPADGroupAtIndex(index));\n }\n }}\n >\n \n \n \n
\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default IDPActiveDirectory;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPOpenID = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const openIDConfigurationURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDConfigurationURL\n );\n const openIDClientID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClientID\n );\n const openIDSecretID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDSecretID\n );\n const openIDCallbackURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDCallbackURL\n );\n const openIDClaimName = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClaimName\n );\n const openIDScopes = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.openIDScopes\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: true,\n value: openIDClaimName,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDClientID,\n openIDSecretID,\n openIDConfigurationURL,\n openIDClaimName,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"openIDConfigurationURL\", e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClientID\", e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDSecretID\", e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDCallbackURL\", e.target.value);\n cleanValidation(\"openID_callbackURL\");\n }}\n label=\"Callback URL\"\n value={openIDCallbackURL}\n placeholder=\"https://your-console-endpoint:9443/oauth_callback\"\n error={validationErrors[\"openID_callbackURL\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"openIDClaimName\", e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n error={validationErrors[\"openID_claimName\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDScopes\", e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n );\n};\n\nexport default IDPOpenID;\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 InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport {\n addIDPNewKeyPair,\n isPageValid,\n removeIDPKeyPairAtIndex,\n setIDPPwdAtIndex,\n setIDPUsrAtIndex,\n} from \"../../createTenantSlice\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport { clearValidationError, getRandomString } from \"../../../utils\";\nimport CasinoIcon from \"@mui/icons-material/Casino\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n shortened: {\n gridTemplateColumns: \"auto auto 50px 50px\",\n display: \"grid\",\n gridGap: 15,\n marginBottom: 10,\n \"& input\": {\n fontWeight: 400,\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPBuiltIn = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const accessKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.accessKeys\n );\n const secretKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.secretKeys\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"Built-in\") {\n customIDPValidation = [...customIDPValidation];\n for (var i = 0; i < accessKeys.length; i++) {\n customIDPValidation.push({\n fieldKey: `accesskey-${i.toString()}`,\n required: true,\n value: accessKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n customIDPValidation.push({\n fieldKey: `secretkey-${i.toString()}`,\n required: true,\n value: secretKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n }\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [idpSelection, accessKeys, secretKeys, dispatch]);\n\n return (\n \n Add additional users\n {accessKeys.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: e.target.value,\n })\n );\n cleanValidation(`accesskey-${index.toString()}`);\n }}\n index={index}\n key={`csv-accesskey-${index.toString()}`}\n error={validationErrors[`accesskey-${index.toString()}`] || \"\"}\n />\n ) => {\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: e.target.value,\n })\n );\n cleanValidation(`secretkey-${index.toString()}`);\n }}\n index={index}\n key={`csv-secretkey-${index.toString()}`}\n error={validationErrors[`secretkey-${index.toString()}`] || \"\"}\n />\n \n
\n
{\n dispatch(addIDPNewKeyPair());\n }}\n disabled={index !== accessKeys.length - 1}\n >\n \n \n
\n
\n {\n dispatch(removeIDPKeyPairAtIndex(index));\n }}\n disabled={accessKeys.length <= 1}\n >\n \n \n
\n
\n \n {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: getRandomString(16),\n })\n );\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: getRandomString(16),\n })\n );\n }}\n size={\"small\"}\n >\n \n \n
\n \n
\n \n \n );\n })}\n \n );\n};\n\nexport default IDPBuiltIn;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { setIDP } from \"../createTenantSlice\";\nimport IDPActiveDirectory from \"./IdentityProvider/IDPActiveDirectory\";\nimport IDPOpenID from \"./IdentityProvider/IDPOpenID\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport IDPBuiltIn from \"./IdentityProvider/IDPBuiltIn\";\nimport {\n OIDCLogoElement,\n LDAPLogoElement,\n BuiltInLogoElement,\n} from \"../../LogoComponents\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n protocolRadioOptions: {\n display: \"flex\",\n flexFlow: \"column\",\n marginBottom: 10,\n\n \"& label\": {\n fontSize: 16,\n fontWeight: 600,\n },\n \"& div\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"top\",\n },\n },\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IdentityProvider = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n\n return (\n \n \n
Identity Provider \n \n Access to the tenant can be controlled via an external Identity\n Manager.\n \n \n \n {\n dispatch(setIDP(e.target.value));\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n {idpSelection === \"Built-in\" && }\n {idpSelection === \"OpenID\" && }\n {idpSelection === \"AD\" && }\n \n );\n};\n\nexport default IdentityProvider;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { RemoveIcon } from \"mds\";\nimport {\n addCaCertificate,\n deleteCaCertificate,\n addFileToCaCertificates,\n addFileToKeyPair,\n addKeyPair,\n deleteKeyPair,\n addClientKeyPair,\n deleteClientKeyPair,\n addFileToClientKeyPair,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport TLSHelpBox from \"../../HelpBox/TLSHelpBox\";\n\ninterface ISecurityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n minioCertsContainer: {\n marginBottom: 15,\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Security = ({ classes }: ISecurityProps) => {\n const dispatch = useAppDispatch();\n\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts\n );\n const minioCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioServerCertificates\n );\n const minioClientCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioClientCertificates\n );\n const caCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioCAsCertificates\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"security\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n\n useEffect(() => {\n if (!enableTLS) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableAutoCert) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableCustomCerts) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n dispatch(isPageValid({ pageName: \"security\", valid: false }));\n }, [enableTLS, enableAutoCert, enableCustomCerts, dispatch]);\n\n return (\n \n \n
Security \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableTLS\", checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableAutoCert\", checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableCustomCerts\", checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n MinIO Server Certificates \n {minioCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n \n
{\n dispatch(addKeyPair());\n }}\n disabled={index !== minioCertificates.length - 1}\n >\n \n \n
\n \n {\n dispatch(deleteKeyPair(keyPair.id));\n }}\n disabled={minioCertificates.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n MinIO Client Certificates \n {minioClientCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n \n
{\n dispatch(addClientKeyPair());\n }}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n \n {\n dispatch(deleteClientKeyPair(keyPair.id));\n }}\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n MinIO CA Certificates \n {caCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToCaCertificates({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n \n
\n
{\n dispatch(addCaCertificate());\n }}\n disabled={index !== caCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteCaCertificate(keyPair.id));\n }}\n disabled={caCertificates.length <= 1}\n >\n \n \n
\n
\n \n \n ))}\n \n \n )}\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(Security);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ntype Props = {\n children: string;\n};\n\nconst SectionH1: React.FC = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default SectionH1;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst VaultKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const vaultEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEndpoint\n );\n const vaultEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEngine\n );\n const vaultNamespace = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultNamespace\n );\n const vaultPrefix = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPrefix\n );\n const vaultAppRoleEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultAppRoleEngine\n );\n const vaultId = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultId\n );\n const vaultSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultSecret\n );\n const vaultRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultRetry\n );\n const vaultPing = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPing\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultEndpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultId,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultSecret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultPing,\n customValidation: parseInt(vaultPing) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultRetry,\n customValidation: parseInt(vaultRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n vaultEndpoint,\n vaultEngine,\n vaultId,\n vaultSecret,\n vaultPing,\n vaultRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"vaultEndpoint\", e.target.value);\n cleanValidation(\"vault_endpoint\");\n }}\n label=\"Endpoint\"\n value={vaultEndpoint}\n error={validationErrors[\"vault_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultEngine\", e.target.value);\n cleanValidation(\"vault_engine\");\n }}\n label=\"Engine\"\n value={vaultEngine}\n />\n \n \n ) => {\n updateField(\"vaultNamespace\", e.target.value);\n }}\n label=\"Namespace\"\n value={vaultNamespace}\n />\n \n \n ) => {\n updateField(\"vaultPrefix\", e.target.value);\n }}\n label=\"Prefix\"\n value={vaultPrefix}\n />\n \n\n \n \n App Role \n \n ) => {\n updateField(\"vaultAppRoleEngine\", e.target.value);\n }}\n label=\"Engine\"\n value={vaultAppRoleEngine}\n />\n \n \n ) => {\n updateField(\"vaultId\", e.target.value);\n cleanValidation(\"vault_id\");\n }}\n label=\"AppRole ID\"\n value={vaultId}\n error={validationErrors[\"vault_id\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultSecret\", e.target.value);\n cleanValidation(\"vault_secret\");\n }}\n label=\"AppRole Secret\"\n value={vaultSecret}\n error={validationErrors[\"vault_secret\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultRetry\", e.target.value);\n cleanValidation(\"vault_retry\");\n }}\n label=\"Retry (Seconds)\"\n value={vaultRetry}\n error={validationErrors[\"vault_retry\"] || \"\"}\n />\n \n \n \n \n \n Status \n ) => {\n updateField(\"vaultPing\", e.target.value);\n cleanValidation(\"vault_ping\");\n }}\n label=\"Ping (Seconds)\"\n value={vaultPing}\n error={validationErrors[\"vault_ping\"] || \"\"}\n />\n \n \n \n );\n};\n\nexport default VaultKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst AzureKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const azureEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureEndpoint\n );\n const azureTenantID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureTenantID\n );\n const azureClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientID\n );\n const azureClientSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientSecret\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureEndpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureTenantID,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureClientID,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureClientSecret,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"azureEndpoint\", e.target.value);\n cleanValidation(\"azure_endpoint\");\n }}\n label=\"Endpoint\"\n value={azureEndpoint}\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"azureTenantID\", e.target.value);\n cleanValidation(\"azure_tenant_id\");\n }}\n label=\"Tenant ID\"\n value={azureTenantID}\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientID\", e.target.value);\n cleanValidation(\"azure_client_id\");\n }}\n label=\"Client ID\"\n value={azureClientID}\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientSecret\", e.target.value);\n cleanValidation(\"azure_client_secret\");\n }}\n label=\"Client Secret\"\n value={azureClientSecret}\n error={validationErrors[\"azure_client_secret\"] || \"\"}\n />\n \n \n \n \n );\n};\n\nexport default AzureKMSAdd;\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 } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { updateAddField } from \"../../createTenantSlice\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst GCPKMSAdd = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n return (\n \n \n ) => {\n updateField(\"gcpProjectID\", e.target.value);\n }}\n label=\"Project ID\"\n value={gcpProjectID}\n />\n \n \n ) => {\n updateField(\"gcpEndpoint\", e.target.value);\n }}\n label=\"Endpoint\"\n value={gcpEndpoint}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"gcpClientEmail\", e.target.value);\n }}\n label=\"Client Email\"\n value={gcpClientEmail}\n />\n \n \n ) => {\n updateField(\"gcpClientID\", e.target.value);\n }}\n label=\"Client ID\"\n value={gcpClientID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKeyID\", e.target.value);\n }}\n label=\"Private Key ID\"\n value={gcpPrivateKeyID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKey\", e.target.value);\n }}\n label=\"Private Key\"\n value={gcpPrivateKey}\n />\n \n \n \n \n );\n};\n\nexport default GCPKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst GemaltoKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const gemaltoEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoEndpoint\n );\n const gemaltoToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoToken\n );\n const gemaltoDomain = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoDomain\n );\n const gemaltoRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoRetry\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoEndpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoToken,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoDomain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoRetry,\n customValidation: parseInt(gemaltoRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"gemaltoEndpoint\", e.target.value);\n cleanValidation(\"gemalto_endpoint\");\n }}\n label=\"Endpoint\"\n value={gemaltoEndpoint}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"gemaltoToken\", e.target.value);\n cleanValidation(\"gemalto_token\");\n }}\n label=\"Token\"\n value={gemaltoToken}\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoDomain\", e.target.value);\n cleanValidation(\"gemalto_domain\");\n }}\n label=\"Domain\"\n value={gemaltoDomain}\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoRetry\", e.target.value);\n cleanValidation(\"gemalto_retry\");\n }}\n label=\"Retry (seconds)\"\n value={gemaltoRetry}\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n \n \n \n );\n};\n\nexport default GemaltoKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst AWSKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const awsEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsEndpoint\n );\n const awsRegion = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsRegion\n );\n const awsKMSKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsKMSKey\n );\n const awsAccessKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsAccessKey\n );\n const awsSecretKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsSecretKey\n );\n const awsToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsToken\n );\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsEndpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsRegion,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsAccessKey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsSecretKey,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n awsEndpoint,\n awsRegion,\n awsSecretKey,\n awsAccessKey,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"awsEndpoint\", e.target.value);\n cleanValidation(\"aws_endpoint\");\n }}\n label=\"Endpoint\"\n value={awsEndpoint}\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsRegion\", e.target.value);\n cleanValidation(\"aws_region\");\n }}\n label=\"Region\"\n value={awsRegion}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsKMSKey\", e.target.value);\n }}\n label=\"KMS Key\"\n value={awsKMSKey}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"awsAccessKey\", e.target.value);\n cleanValidation(\"aws_accessKey\");\n }}\n label=\"Access Key\"\n value={awsAccessKey}\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsSecretKey\", e.target.value);\n cleanValidation(\"aws_secretKey\");\n }}\n label=\"Secret Key\"\n value={awsSecretKey}\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsToken\", e.target.value);\n }}\n label=\"Token\"\n value={awsToken}\n />\n \n \n \n \n );\n};\n\nexport default AWSKMSAdd;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\n\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport {\n addFileMinIOMTLSCert,\n addFileKESServerCert,\n addFileKMSCa,\n addFileKMSMTLSCert,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport VaultKMSAdd from \"./Encryption/VaultKMSAdd\";\nimport AzureKMSAdd from \"./Encryption/AzureKMSAdd\";\nimport GCPKMSAdd from \"./Encryption/GCPKMSAdd\";\nimport GemaltoKMSAdd from \"./Encryption/GemaltoKMSAdd\";\nimport AWSKMSAdd from \"./Encryption/AWSKMSAdd\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\ninterface IEncryptionProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n encryptionTypeOptions: {\n marginBottom: 15,\n },\n mutualTlsConfig: {\n marginTop: 15,\n \"& fieldset\": {\n flex: 1,\n },\n },\n rightSpacer: {\n marginRight: 15,\n },\n responsiveContainer: {\n \"@media (max-width: 900px)\": {\n display: \"flex\",\n flexFlow: \"column\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Encryption = ({ classes }: IEncryptionProps) => {\n const dispatch = useAppDispatch();\n\n const replicas = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.replicas\n );\n const rawConfiguration = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.rawConfiguration\n );\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const enableEncryption = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.enableEncryption\n );\n const encryptionType = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionType\n );\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey\n );\n const enableCustomCertsForKES = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.enableCustomCertsForKES\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert\n );\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS\n );\n const minioServerCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioServerCertificates\n );\n const kesServerCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kesServerCertificate\n );\n const minioMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.minioMTLSCertificate\n );\n const kmsMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsMTLSCertificate\n );\n const kmsCA = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsCA\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts\n );\n const kesSecurityContext = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.kesSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n let encryptionAvailable = false;\n if (\n enableTLS &&\n (enableAutoCert ||\n (minioServerCertificates &&\n minioServerCertificates.filter(\n (item) => item.encoded_key && item.encoded_cert\n ).length > 0))\n ) {\n encryptionAvailable = true;\n }\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (enableEncryption) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"rawConfiguration\",\n required: encryptionTab > 0,\n value: rawConfiguration,\n },\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: kesSecurityContext.runAsUser,\n customValidation:\n kesSecurityContext.runAsUser === \"\" ||\n parseInt(kesSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: kesSecurityContext.runAsGroup,\n customValidation:\n kesSecurityContext.runAsGroup === \"\" ||\n parseInt(kesSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: kesSecurityContext.fsGroup,\n customValidation:\n kesSecurityContext.fsGroup === \"\" ||\n parseInt(kesSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enableCustomCerts) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_key,\n },\n {\n fieldKey: \"serverCert\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_cert,\n },\n {\n fieldKey: \"clientKey\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_key,\n },\n {\n fieldKey: \"clientCert\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_cert,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n rawConfiguration,\n encryptionTab,\n enableEncryption,\n encryptionType,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n dispatch,\n enableAutoCert,\n enableCustomCerts,\n kesServerCertificate.encoded_key,\n kesServerCertificate.encoded_cert,\n minioMTLSCertificate.encoded_key,\n minioMTLSCertificate.encoded_cert,\n kesSecurityContext,\n replicas,\n ]);\n\n return (\n \n \n \n Encryption \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableEncryption\", checked);\n }}\n description=\"\"\n disabled={!encryptionAvailable}\n />\n \n \n \n \n \n MinIO Server-Side Encryption (SSE) protects objects as part of write\n operations, allowing clients to take advantage of server processing\n power to secure objects at the storage layer (encryption-at-rest).\n SSE also provides key functionality to regulatory and compliance\n requirements around secure locking and erasure.\n \n \n \n \n \n\n {enableEncryption && (\n \n \n , value: number) => {\n updateField(\"encryptionTab\", value);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {encryptionTab ? (\n \n \n {\n updateField(\"rawConfiguration\", value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n {\n updateField(\"encryptionType\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n {encryptionType === \"vault\" && }\n {encryptionType === \"azure\" && }\n {encryptionType === \"gcp\" && }\n {encryptionType === \"aws\" && }\n {encryptionType === \"gemalto\" && }\n \n )}\n\n \n
Additional Configurations \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCertsForKES\", checked);\n }}\n label={\"Custom Certificates\"}\n disabled={!enableAutoCert}\n />\n \n {(enableCustomCertsForKES || !enableAutoCert) && (\n \n \n \n \n \n Encryption server certificates\n \n {\n dispatch(\n addFileKESServerCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n error={validationErrors[\"serverKey\"] || \"\"}\n value={kesServerCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileKESServerCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n error={validationErrors[\"serverCert\"] || \"\"}\n value={kesServerCertificate.cert}\n required={!enableAutoCert}\n />\n \n \n \n \n \n \n \n MinIO mTLS certificates (connection between MinIO and\n the Encryption server)\n \n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n error={validationErrors[\"clientKey\"] || \"\"}\n value={minioMTLSCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n error={validationErrors[\"clientCert\"] || \"\"}\n value={minioMTLSCertificate.cert}\n required={!enableAutoCert}\n />\n \n \n \n \n \n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_key\");\n }}\n accept=\".key,.pem\"\n id=\"vault_key\"\n name=\"vault_key\"\n label=\"Key\"\n value={kmsMTLSCertificate.key}\n />\n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_cert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_cert\"\n name=\"vault_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate.cert}\n />\n {\n dispatch(\n addFileKMSCa({\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_ca\"\n name=\"vault_ca\"\n label=\"CA\"\n value={kmsCA.cert}\n />\n \n \n \n )}\n \n \n ) => {\n updateField(\"replicas\", e.target.value);\n cleanValidation(\"replicas\");\n }}\n label=\"Replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n\n \n \n SecurityContext for KES pods\n \n \n \n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={kesSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={kesSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={kesSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(Encryption);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, SelectChangeEvent } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { LabelKeyPair } from \"../../types\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../common/api\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { AddIcon, RemoveIcon } from \"mds\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport TolerationSelector from \"../../../Common/TolerationSelector/TolerationSelector\";\nimport { setModalErrorSnackMessage } from \"../../../../../systemSlice\";\nimport {\n addNewToleration,\n isPageValid,\n removeToleration,\n setKeyValuePairs,\n setTolerationInfo,\n updateAddField,\n} from \"../createTenantSlice\";\n\ninterface IAffinityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n affinityConfigField: {\n display: \"flex\",\n },\n affinityFieldLabel: {\n display: \"flex\",\n flexFlow: \"column\",\n flex: 1,\n },\n radioField: {\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: 10,\n \"& div:first-child\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n textAlign: \"left !important\",\n },\n },\n affinityLabelKey: {\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n affinityLabelValue: {\n marginLeft: 10,\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n rowActions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n affinityRow: {\n marginBottom: 10,\n display: \"flex\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface OptionPair {\n label: string;\n value: string;\n}\n\nconst Affinity = ({ classes }: IAffinityProps) => {\n const dispatch = useAppDispatch();\n\n const podAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.podAffinity\n );\n const nodeSelectorLabels = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.nodeSelectorLabels\n );\n const withPodAntiAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.withPodAntiAffinity\n );\n const keyValuePairs = useSelector(\n (state: AppState) => state.createTenant.nodeSelectorPairs\n );\n const tolerations = useSelector(\n (state: AppState) => state.createTenant.tolerations\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n const [loading, setLoading] = useState(true);\n const [keyValueMap, setKeyValueMap] = useState<{ [key: string]: string[] }>(\n {}\n );\n const [keyOptions, setKeyOptions] = useState([]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"affinity\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/nodes/labels`)\n .then((res: { [key: string]: string[] }) => {\n setLoading(false);\n setKeyValueMap(res);\n let keys: OptionPair[] = [];\n for (let k in res) {\n keys.push({\n label: k,\n value: k,\n });\n }\n setKeyOptions(keys);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n setKeyValueMap({});\n });\n }\n }, [dispatch, loading]);\n\n useEffect(() => {\n if (keyValuePairs) {\n const vlr = keyValuePairs\n .filter((kvp) => kvp.key !== \"\")\n .map((kvp) => `${kvp.key}=${kvp.value}`)\n .filter((kvs, i, a) => a.indexOf(kvs) === i);\n const vl = vlr.join(\"&\");\n updateField(\"nodeSelectorLabels\", vl);\n }\n }, [keyValuePairs, updateField]);\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (podAffinity === \"nodeSelector\") {\n let valid = true;\n\n const splittedLabels = nodeSelectorLabels.split(\"&\");\n\n if (splittedLabels.length === 1 && splittedLabels[0] === \"\") {\n valid = false;\n }\n\n splittedLabels.forEach((item: string, index: number) => {\n const splitItem = item.split(\"=\");\n\n if (splitItem.length !== 2) {\n valid = false;\n }\n\n if (index + 1 !== splittedLabels.length) {\n if (splitItem[0] === \"\" || splitItem[1] === \"\") {\n valid = false;\n }\n }\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"labels\",\n required: true,\n value: nodeSelectorLabels,\n customValidation: !valid,\n customValidationMessage:\n \"You need to add at least one label key-pair\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"affinity\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [dispatch, podAffinity, nodeSelectorLabels]);\n\n const updateToleration = (index: number, field: string, value: any) => {\n const alterToleration = { ...tolerations[index], [field]: value };\n\n dispatch(\n setTolerationInfo({\n index: index,\n tolerationValue: alterToleration,\n })\n );\n };\n\n return (\n \n \n
Pod Placement \n \n Configure how pods will be assigned to nodes\n \n \n \n \n Type
\n \n MinIO supports multiple configurations for Pod Affinity\n
\n \n {\n updateField(\"podAffinity\", e.target.value);\n }}\n selectorOptions={[\n { label: \"None\", value: \"none\" },\n { label: \"Default (Pod Anti-Affinity)\", value: \"default\" },\n { label: \"Node Selector\", value: \"nodeSelector\" },\n ]}\n />\n \n \n \n {podAffinity === \"nodeSelector\" && (\n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"withPodAntiAffinity\", checked);\n }}\n label={\"With Pod Anti-Affinity\"}\n />\n \n \n Labels \n {validationErrors[\"labels\"]} \n \n {keyValuePairs &&\n keyValuePairs.map((kvp, i) => {\n return (\n \n \n {keyOptions.length > 0 && (\n ) => {\n const newKey = e.target.value as string;\n const newLKP: LabelKeyPair = {\n key: newKey,\n value: keyValueMap[newKey][0],\n };\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = newLKP;\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.key}\n options={keyOptions}\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"Key\"}\n />\n )}\n \n \n {keyOptions.length > 0 && (\n ) => {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.value}\n options={\n keyValueMap[kvp.key]\n ? keyValueMap[kvp.key].map((v) => {\n return { label: v, value: v };\n })\n : []\n }\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"value\"}\n />\n )}\n \n \n \n
{\n const arrCp = [...keyValuePairs];\n if (keyOptions.length > 0) {\n arrCp.push({\n key: keyOptions[0].value,\n value: keyValueMap[keyOptions[0].value][0],\n });\n } else {\n arrCp.push({ key: \"\", value: \"\" });\n }\n\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={i !== keyValuePairs.length - 1}\n >\n \n \n
\n \n {\n const arrCp = keyValuePairs.filter(\n (item, index) => index !== i\n );\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={keyValuePairs.length <= 1}\n >\n \n \n
\n \n \n );\n })}\n \n \n \n )}\n \n \n Tolerations \n \n {validationErrors[\"tolerations\"]}\n \n \n {tolerations &&\n tolerations.map((tol, i) => {\n return (\n \n {\n updateToleration(i, \"effect\", value);\n }}\n tolerationKey={tol.key}\n onTolerationKeyChange={(value) => {\n updateToleration(i, \"key\", value);\n }}\n operator={tol.operator}\n onOperatorChange={(value) => {\n updateToleration(i, \"operator\", value);\n }}\n value={tol.value}\n onValueChange={(value) => {\n updateToleration(i, \"value\", value);\n }}\n tolerationSeconds={tol.tolerationSeconds?.seconds || 0}\n onSecondsChange={(value) => {\n updateToleration(i, \"tolerationSeconds\", {\n seconds: value,\n });\n }}\n index={i}\n />\n \n
{\n dispatch(addNewToleration());\n }}\n disabled={i !== tolerations.length - 1}\n >\n \n \n
\n\n \n dispatch(removeToleration(i))}\n disabled={tolerations.length <= 1}\n >\n \n \n
\n \n );\n })}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(Affinity);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IImagesProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Images = ({ classes }: IImagesProps) => {\n const dispatch = useAppDispatch();\n\n const customImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customImage\n );\n const imageName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageName\n );\n const customDockerhub = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customDockerhub\n );\n const imageRegistry = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageRegistry\n );\n const imageRegistryUsername = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryUsername\n );\n const imageRegistryPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryPassword\n );\n\n const prometheusCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusEnabled\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom\n );\n const logSearchCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchEnabled\n );\n const logSearchVolumeSize = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchVolumeSize\n );\n\n const prometheusVolumeSize = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusVolumeSize\n );\n\n const logSearchSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSelectedStorageClass\n );\n const logSearchImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchImage\n );\n const kesImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.kesImage\n );\n const logSearchPostgresImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresImage\n );\n const logSearchPostgresInitImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresInitImage\n );\n const prometheusSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSelectedStorageClass\n );\n const prometheusImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusImage\n );\n const prometheusSidecarImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSidecarImage\n );\n const prometheusInitImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusInitImage\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/operator:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n dispatch,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n
Container Images \n \n Specify the container images used by the Tenant and it's features.\n \n \n\n \n \n ) => {\n updateField(\"imageName\", e.target.value);\n cleanValidation(\"image\");\n }}\n label=\"MinIO\"\n value={imageName}\n error={validationErrors[\"image\"] || \"\"}\n placeholder=\"minio/minio:RELEASE.2022-02-26T02-54-46Z\"\n />\n \n\n \n ) => {\n updateField(\"kesImage\", e.target.value);\n cleanValidation(\"kesImage\");\n }}\n label=\"KES\"\n value={kesImage}\n error={validationErrors[\"kesImage\"] || \"\"}\n placeholder=\"minio/kes:v0.17.6\"\n />\n \n \n Log Search \n \n \n ) => {\n updateField(\"logSearchImage\", e.target.value);\n cleanValidation(\"logSearchImage\");\n }}\n label=\"API\"\n value={logSearchImage}\n error={validationErrors[\"logSearchImage\"] || \"\"}\n placeholder=\"minio/operator:v4.4.22\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresImage\", e.target.value);\n cleanValidation(\"logSearchPostgresImage\");\n }}\n label=\"PostgreSQL\"\n value={logSearchPostgresImage}\n error={validationErrors[\"logSearchPostgresImage\"] || \"\"}\n placeholder=\"library/postgres:13\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresInitImage\", e.target.value);\n cleanValidation(\"logSearchPostgresInitImage\");\n }}\n label=\"PostgreSQL Init\"\n value={logSearchPostgresInitImage}\n error={validationErrors[\"logSearchPostgresInitImage\"] || \"\"}\n placeholder=\"library/busybox:1.33.1\"\n />\n \n \n Monitoring \n \n \n ) => {\n updateField(\"prometheusImage\", e.target.value);\n cleanValidation(\"prometheusImage\");\n }}\n label=\"Prometheus\"\n value={prometheusImage}\n error={validationErrors[\"prometheusImage\"] || \"\"}\n placeholder=\"quay.io/prometheus/prometheus:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusSidecarImage\", e.target.value);\n cleanValidation(\"prometheusSidecarImage\");\n }}\n label=\"Prometheus Sidecar\"\n value={prometheusSidecarImage}\n error={validationErrors[\"prometheusSidecarImage\"] || \"\"}\n placeholder=\"library/alpine:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusInitImage\", e.target.value);\n cleanValidation(\"prometheusInitImage\");\n }}\n label=\"Prometheus Init\"\n value={prometheusInitImage}\n error={validationErrors[\"prometheusInitImage\"] || \"\"}\n placeholder=\"library/busybox:1.33.1\"\n />\n \n \n\n {customImage && (\n \n \n Custom Container Registry \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customDockerhub\", checked);\n }}\n label={\"Use a private container registry\"}\n />\n \n \n )}\n {customDockerhub && (\n \n \n ) => {\n updateField(\"imageRegistry\", e.target.value);\n }}\n label=\"Endpoint\"\n value={imageRegistry}\n error={validationErrors[\"registry\"] || \"\"}\n placeholder=\"https://index.docker.io/v1/\"\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryUsername\", e.target.value);\n }}\n label=\"Username\"\n value={imageRegistryUsername}\n error={validationErrors[\"registryUsername\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryPassword\", e.target.value);\n }}\n label=\"Password\"\n value={imageRegistryPassword}\n error={validationErrors[\"registryPassword\"] || \"\"}\n required\n />\n \n \n )}\n \n );\n};\n\nexport default withStyles(styles)(Images);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nimport { Divider } from \"@mui/material\";\n\ninterface ISizePreviewProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 4,\n },\n table: {\n \"& .MuiTableCell-root\": {\n fontSize: 13,\n },\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst SizePreview = ({ classes }: ISizePreviewProps) => {\n const nodes = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.nodes\n );\n const memoryNode = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesMemoryRequest\n );\n const ecParity = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParity\n );\n\n const distribution = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.distribution\n );\n const ecParityCalc = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParityCalc\n );\n\n const cpuToUse = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesCPURequest\n );\n const integrationSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.integrationSelection\n );\n\n const usableInformation = ecParityCalc.storageFactors.find(\n (element) => element.erasureCode === ecParity\n );\n\n return (\n \n
Resource Allocation \n
\n
\n \n \n Number of Servers \n \n {parseInt(nodes) > 0 ? nodes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Drives per Server \n \n {distribution ? distribution.disks : \"-\"}\n \n \n \n Drive Capacity \n \n {distribution ? niceBytes(distribution.pvSize) : \"-\"}\n \n \n \n )}\n\n \n Total Volumes \n \n {distribution ? distribution.persistentVolumes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Memory per Node \n {memoryNode} Gi \n \n \n \n CPU Selection\n \n \n {cpuToUse}\n \n \n \n )}\n \n
\n {ecParityCalc.error === 0 && usableInformation && (\n
\n Erasure Code Configuration \n \n \n \n \n EC Parity \n \n {ecParity !== \"\" ? ecParity : \"-\"}\n \n \n \n Raw Capacity \n \n {niceBytes(ecParityCalc.rawCapacity)}\n \n \n \n Usable Capacity \n \n {niceBytes(usableInformation.maxCapacity)}\n \n \n \n \n Server Failures Tolerated\n \n \n {distribution\n ? Math.floor(\n usableInformation.maxFailureTolerations /\n distribution.disks\n )\n : \"-\"}\n \n \n \n
\n \n )}\n {integrationSelection.typeSelection !== \"\" &&\n integrationSelection.storageClass !== \"\" && (\n
\n Single Instance Configuration \n \n \n \n \n CPU \n \n {integrationSelection.CPU !== 0\n ? integrationSelection.CPU\n : \"-\"}\n \n \n \n Memory \n \n {integrationSelection.memory !== 0\n ? `${integrationSelection.memory} Gi`\n : \"-\"}\n \n \n \n Drives per Server \n \n {integrationSelection.drivesPerServer !== 0\n ? `${integrationSelection.drivesPerServer}`\n : \"-\"}\n \n \n \n \n Drive Size\n \n \n {integrationSelection.driveSize.driveSize}\n {integrationSelection.driveSize.sizeUnit}\n \n \n \n
\n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(SizePreview);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n deleteDialogStyles,\n modalBasic,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { closeAddNSModal } from \"../../createTenantSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { createNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...modalBasic,\n ...deleteDialogStyles,\n })\n);\n\nconst AddNamespaceModal = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace\n );\n const addNamespaceLoading = useSelector(\n (state: AppState) => state.createTenant.addNSLoading\n );\n const addNamespaceOpen = useSelector(\n (state: AppState) => state.createTenant.addNSOpen\n );\n\n return (\n }\n isLoading={addNamespaceLoading}\n onConfirm={() => {\n dispatch(createNamespaceAsync());\n }}\n onClose={() => {\n dispatch(closeAddNSModal());\n }}\n confirmationContent={\n \n {addNamespaceLoading && }\n \n Are you sure you want to add a namespace called\n \n {namespace} ?\n \n \n }\n />\n );\n};\n\nexport default AddNamespaceModal;\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, useMemo } from \"react\";\nimport { AddIcon } from \"mds\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { openAddNSModal, setNamespace } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddNamespaceModal from \"../helpers/AddNamespaceModal\";\nimport debounce from \"lodash/debounce\";\nimport { IMkEnvs } from \"./utils\";\nimport { validateNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst NamespaceSelector = ({ formToRender }: { formToRender?: IMkEnvs }) => {\n const dispatch = useAppDispatch();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace\n );\n\n const showNSCreateButton = useSelector(\n (state: AppState) => state.createTenant.showNSCreateButton\n );\n\n const namespaceError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"namespace\"]\n );\n const openAddNSConfirm = useSelector(\n (state: AppState) => state.createTenant.addNSOpen\n );\n\n const debounceNamespace = useMemo(\n () =>\n debounce(() => {\n dispatch(validateNamespaceAsync());\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n if (namespace !== \"\") {\n debounceNamespace();\n // Cancel previous debounce calls during useEffect cleanup.\n return debounceNamespace.cancel;\n }\n }, [debounceNamespace, namespace]);\n\n const addNamespace = () => {\n dispatch(openAddNSModal());\n };\n\n return (\n \n {openAddNSConfirm && }\n ) => {\n dispatch(setNamespace(e.target.value));\n }}\n label=\"Namespace\"\n value={namespace}\n error={namespaceError || \"\"}\n overlayId={\"add-namespace\"}\n overlayIcon={showNSCreateButton ? : null}\n overlayAction={addNamespace}\n required\n />\n \n );\n};\nexport default NamespaceSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport SizePreview from \"../SizePreview\";\nimport TenantSize from \"./TenantSize\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport { IMkEnvs, mkPanelConfigurations } from \"./utils\";\nimport {\n isPageValid,\n setStorageType,\n setTenantName,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport NamespaceSelector from \"./NamespaceSelector\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizePreview: {\n marginLeft: 10,\n background: \"#FFFFFF\",\n border: \"1px solid #EAEAEA\",\n padding: 2,\n marginTop: 20,\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst NameTenantField = () => {\n const dispatch = useAppDispatch();\n const tenantName = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.tenantName\n );\n\n const tenantNameError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"tenant-name\"]\n );\n\n return (\n ) => {\n dispatch(setTenantName(e.target.value));\n }}\n label=\"Name\"\n value={tenantName}\n required\n error={tenantNameError || \"\"}\n />\n );\n};\n\ninterface INameTenantMainScreen {\n classes: any;\n formToRender?: IMkEnvs;\n}\n\nconst NameTenantMain = ({ classes, formToRender }: INameTenantMainScreen) => {\n const dispatch = useAppDispatch();\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const selectedStorageType = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageType\n );\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const features = useSelector(selFeatures);\n\n // Common\n const updateField = useCallback(\n (field: string, value: string) => {\n dispatch(\n updateAddField({ pageName: \"nameTenant\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n const isValid =\n (formToRender === IMkEnvs.default && storageClasses.length > 0) ||\n (formToRender !== IMkEnvs.default && selectedStorageType !== \"\");\n\n dispatch(isPageValid({ pageName: \"nameTenant\", valid: isValid }));\n }, [storageClasses, dispatch, selectedStorageType, formToRender]);\n\n return (\n \n \n \n \n \n \n \n
Name \n \n How would you like to name this new tenant?\n \n \n \n \n
\n \n \n \n \n {formToRender === IMkEnvs.default ? (\n \n ) => {\n updateField(\n \"selectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Storage Class\"\n value={selectedStorageClass}\n options={storageClasses}\n disabled={storageClasses.length < 1}\n />\n \n ) : (\n \n ) => {\n dispatch(\n setStorageType({\n storageType: e.target.value as string,\n features: features,\n })\n );\n }}\n label={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorLabel`,\n \"Storage Type\"\n )}\n value={selectedStorageType}\n options={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorValues`,\n []\n )}\n />\n \n )}\n {formToRender === IMkEnvs.default ? (\n \n ) : (\n get(\n mkPanelConfigurations,\n `${formToRender}.sizingComponent`,\n null\n )\n )}\n \n \n \n \n \n \n
\n \n \n \n );\n};\n\nexport default withStyles(styles)(NameTenantMain);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { selFeatures } from \"../../../../consoleSlice\";\n\nconst TenantResources = () => {\n const features = useSelector(selFeatures);\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nexport default TenantResources;\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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchEnabledFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst ConfigLogSearch = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const logSearchEnabled = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchEnabled\n );\n const logSearchVolumeSize = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchVolumeSize\n );\n const logSearchSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSelectedStorageClass\n );\n const logSearchImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchImage\n );\n const logSearchPostgresImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresImage\n );\n const logSearchPostgresInitImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresInitImage\n );\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n const logSearchSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSecurityContext\n );\n const logSearchPostgresSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (logSearchEnabled) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n logSearchImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n dispatch,\n logSearchEnabled,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n \n Audit Log \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"logSearchEnabled\", checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n \n \n \n \n Deploys a small PostgreSQL database and stores access logs of all\n calls into the tenant.\n \n \n \n \n \n {logSearchEnabled && (\n \n \n ) => {\n updateField(\n \"logSearchSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Log Search Storage Class\"\n value={logSearchSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n \n ) => {\n updateField(\"logSearchVolumeSize\", e.target.value);\n cleanValidation(\"log_search_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={logSearchVolumeSize}\n required\n error={validationErrors[\"log_search_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n \n\n \n \n SecurityContext for LogSearch\n \n\n \n \n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"logSearch_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"logSearch_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"logSearch_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n \n SecurityContext for PostgreSQL\n \n\n \n \n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchPostgresSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"postgres_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchPostgresSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"postgres_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchPostgresSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"postgres_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(ConfigLogSearch);\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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusEnabledFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst ConfigPrometheus = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const prometheusEnabled = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusEnabled\n );\n const prometheusVolumeSize = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusVolumeSize\n );\n const prometheusSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSelectedStorageClass\n );\n const prometheusImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusImage\n );\n const prometheusSidecarImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSidecarImage\n );\n const prometheusInitImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusInitImage\n );\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n const prometheusSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (prometheusEnabled) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n dispatch,\n prometheusEnabled,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n tenantSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n }\n }, [\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n \n Monitoring \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"prometheusEnabled\", checked);\n }}\n description=\"\"\n />\n \n \n \n \n A small Prometheus will be deployed to keep metrics about the tenant.\n \n \n \n \n \n \n {prometheusEnabled && (\n \n \n ) => {\n updateField(\n \"prometheusSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Storage Class\"\n value={prometheusSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n \n ) => {\n updateField(\"prometheusVolumeSize\", e.target.value);\n cleanValidation(\"prometheus_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={prometheusVolumeSize}\n required\n error={validationErrors[\"prometheus_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n \n \n \n SecurityContext\n \n \n \n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={prometheusSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\n \"prometheus_securityContext_runAsGroup\"\n );\n }}\n label=\"Run As Group\"\n value={prometheusSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={prometheusSecurityContext.fsGroup}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_fsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(ConfigPrometheus);\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 .\nexport const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\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 { Button } from \"mds\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { requiredPages } from \"./common\";\nimport { createTenantAsync } from \"./thunks/createTenantThunk\";\n\nconst CreateTenantButton = () => {\n const dispatch = useAppDispatch();\n\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant\n );\n\n const validPages = useSelector(\n (state: AppState) => state.createTenant.validPages\n );\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n\n const enabled =\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v));\n\n return (\n {\n dispatch(createTenantAsync());\n }}\n disabled={!enabled}\n key={`button-AddTenant-Create`}\n label={\"Create\"}\n />\n );\n};\n\nexport default CreateTenantButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst NewTenantCredentials = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const showNewCredentials = useSelector(\n (state: AppState) => state.createTenant.showNewCredentials\n );\n const createdAccount = useSelector(\n (state: AppState) => state.createTenant.createdAccount\n );\n\n return (\n \n {showNewCredentials && (\n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n entity=\"Tenant\"\n />\n )}\n \n );\n};\n\nexport default NewTenantCredentials;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport {\n IWizardButton,\n IWizardElement,\n} from \"../../Common/GenericWizard/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport BackLink from \"../../../../common/BackLink\";\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\nimport ConfigLogSearch from \"./Steps/ConfigLogSearch\";\nimport ConfigPrometheus from \"./Steps/ConfigPrometheus\";\nimport {\n IMkEnvs,\n resourcesConfigurations,\n} from \"./Steps/TenantResources/utils\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { StorageIcon } from \"mds\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport CreateTenantButton from \"./CreateTenantButton\";\nimport NewTenantCredentials from \"./NewTenantCredentials\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n })\n);\n\nconst AddTenant = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const features = useSelector(selFeatures);\n\n // Fields\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant\n );\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n },\n };\n\n const createButton: IWizardButton = {\n componentRender: ,\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Audit Log\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Monitoring\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n return (\n \n \n {\n dispatch(resetAddTenantForm());\n }}\n />\n }\n />\n\n \n {addSending && (\n \n \n \n )}\n \n \n \n {formRender === IMkEnvs.aws && (\n \n }\n help={\n \n Performance Optimized : Uses the gp3 EBS storage\n class class configured at 1,000Mi/s throughput and 16,000\n IOPS, however the minimum volume size for this type of EBS\n volume is 32Gi .\n \n \n Storage Optimized : Uses the sc1 EBS storage\n class, however the minimum volume size for this type of EBS\n volume is \n 16Ti to unlock their maximum throughput speed of\n 250Mi/s.\n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default AddTenant;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { CertificateIcon } from \"mds\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n \n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n \n \n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n \n \n \n minio.{namespace}\n \n minio.{namespace}.svc\n \n minio.{namespace}.svc.<cluster domain>\n \n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n \n *.{namespace}.svc.<cluster domain>\n
\n \n Replace <tenant-name> ,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport { LDAPIcon } from \"mds\";\nimport { OIDCIcon } from \"mds\";\nimport { UsersIcon } from \"mds\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID \n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory \n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in \n \n );\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"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: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z\"\n}), 'Casino');\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: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n position: 'relative',\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n top: '50%',\n content: '\"\"',\n transform: 'translateY(50%)'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n top: '0%',\n left: '50%',\n borderTop: 0,\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n transform: 'translateX(0%)'\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.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 * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\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`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.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 text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","flexFlow","padding","inputWithCopy","background","inputLabel","fieldBasic","label","value","OutlinedInput","readOnly","endAdornment","InputAdornment","position","TooltipWrapper","tooltip","text","id","onClick","onMouseDown","style","icon","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","warningBlock","color","margin","credentialTitle","buttonContainer","justifyContent","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","titleIcon","Grid","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","undefined","consoleExtras","itemMap","url","api","path","JSON","stringify","variant","length","allCredentials","mode","onBeforeChange","editorHeight","sx","tooltipContainer","placement","overflow","language","onChange","evn","target","fontFamily","minHeight","borderTop","marginLeft","type","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","fileInputField","fileInputStyles","textBoxContainer","name","disabled","required","error","accept","useState","showFileSelector","setShowSelector","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","Tooltip","e","fileName","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","deleteDialogStyles","content","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","scroll","event","reason","titleText","closeContainer","closeButton","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","configSectionItem","tenantCustomizationFields","containerItem","fieldGroup","createTenantCommon","responsiveSectionItem","wrapperContainer","envVarRow","borderBottom","flex","minWidth","fileItem","rowActions","overlayAction","modalBasic","wizardCommon","formFieldStyles","exposeMinIO","createTenant","fields","configure","exposeConsole","setDomains","consoleDomain","minioDomains","tenantCustom","tenantEnvVars","envVars","tenantSecurityContext","validationErrors","setValidationErrors","updateField","useCallback","field","updateAddField","pageName","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","minioExtraValidations","validation","pattern","customPatternMessage","commonVal","commonFormValidation","isPageValid","valid","Object","keys","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","h3Section","descriptionText","FormSwitchWrapper","checked","InputBoxWrapper","placeholder","domain","copyDomains","updateMinIODomain","addNewMinIODomain","Add","removeMinIODomain","multiContainer","min","SelectWrapper","fsGroupChangePolicy","options","runAsNonRoot","Divider","envVar","formFieldRow","key","existingEnvVars","setEnvVars","keyPair","i","push","filter","fIndex","useStyles","makeStyles","adUserDnRows","buttonTray","idpSelection","identityProvider","ADURL","ADSkipTLS","ADServerInsecure","ADGroupSearchBaseDN","ADGroupSearchFilter","ADUserDNs","ADGroupDNs","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","customIDPValidation","Fragment","Typography","gutterBottom","_","setIDPADUsrAtIndex","userDN","addIDPADUsrAtIndex","removeIDPADUsrAtIndex","Delete","setIDPADGroupAtIndex","addIDPADGroupAtIndex","removeIDPADGroupAtIndex","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDCallbackURL","openIDClaimName","openIDScopes","shortened","gridTemplateColumns","gridGap","accessKeys","secretKeys","setIDPUsrAtIndex","setIDPPwdAtIndex","addIDPNewKeyPair","removeIDPKeyPairAtIndex","getRandomString","Casino","protocolRadioOptions","RadioGroupSelector","currentSelection","setIDP","selectorOptions","minioCertificateRows","minioCertsContainer","minioCACertsRow","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","minioServerCertificates","minioClientCertificates","caCertificates","minioCAsCertificates","spacing","description","TLSHelpBox","FileSelector","encodedValue","addFileToKeyPair","cert","addKeyPair","deleteKeyPair","addFileToClientKeyPair","addClientKeyPair","deleteClientKeyPair","addFileToCaCertificates","addCaCertificate","deleteCaCertificate","encryptionTab","encryption","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","encryptionValidation","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","replicas","rawConfiguration","enableEncryption","encryptionType","enableCustomCertsForKES","kesServerCertificate","minioMTLSCertificate","kmsMTLSCertificate","kmsCA","kesSecurityContext","encryptionAvailable","encoded_key","encoded_cert","textAlign","indicatorLabels","hrClass","Tabs","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","addFileKESServerCert","addFileMinIOMTLSCert","addFileKMSMTLSCert","addFileKMSCa","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","tolerations","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","then","res","k","catch","err","setModalErrorSnackMessage","vl","kvp","kvs","a","indexOf","join","splittedLabels","forEach","splitItem","updateToleration","alterToleration","setTolerationInfo","tolerationValue","affinityHelpText","newKey","newLKP","arrCp","setKeyValuePairs","v","tol","TolerationSelector","effect","onEffectChange","tolerationKey","onTolerationKeyChange","operator","onOperatorChange","onValueChange","tolerationSeconds","seconds","onSecondsChange","addNewToleration","removeToleration","customImage","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","prometheusCustom","prometheusEnabled","logSearchCustom","logSearchEnabled","logSearchVolumeSize","prometheusVolumeSize","logSearchSelectedStorageClass","logSearchImage","kesImage","logSearchPostgresImage","logSearchPostgresInitImage","prometheusSelectedStorageClass","prometheusImage","prometheusSidecarImage","prometheusInitImage","table","nodes","tenantSize","memoryNode","resourcesMemoryRequest","ecParity","distribution","ecParityCalc","cpuToUse","resourcesCPURequest","integrationSelection","usableInformation","storageFactors","find","erasureCode","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","drivesPerServer","driveSize","sizeUnit","wrapText","wordWrap","namespace","nameTenant","addNamespaceLoading","addNSLoading","addNamespaceOpen","addNSOpen","ConfirmDialog","confirmText","confirmButtonProps","isOpen","isLoading","onConfirm","createNamespaceAsync","closeAddNSModal","confirmationContent","LinearProgress","DialogContentText","formToRender","showNSCreateButton","namespaceError","openAddNSConfirm","debounceNamespace","useMemo","debounce","validateNamespaceAsync","cancel","setNamespace","overlayId","overlayIcon","openAddNSModal","NameTenantField","tenantName","tenantNameError","setTenantName","sizePreview","selectedStorageClass","selectedStorageType","storageClasses","features","selFeatures","isValid","IMkEnvs","setStorageType","storageType","mkPanelConfigurations","TenantSize","formRender","setFormRender","setConfiguration","resourcesConfigurations","includes","logSearchEnabledFields","fieldSpaceTop","logSearchSecurityContext","logSearchPostgresSecurityContext","configureSTClasses","overlayObject","InputUnitMenu","onUnitChange","unitSelected","unitsList","prometheusEnabledFields","prometheusSecurityContext","requiredPages","addSending","addingTenant","validPages","enabled","every","createTenantAsync","navigate","useNavigate","showNewCredentials","createdAccount","CredentialsPrompt","resetAddTenantForm","pageBox","settingsCommon","cancelButton","action","createButton","componentRender","filteredWizardSteps","buttons","advancedOnly","PageHeader","BackLink","to","executeOnClick","PageLayout","GenericWizard","wizardSteps","HelpBox","FeatureItem","fontStyle","params","useParams","tenantNameParam","tenantNamespaceParam","tenantNamespace","href","rel","OIDCLogoElement","columnGap","LDAPLogoElement","BuiltInLogoElement","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","_excluded","DividerRoot","styled","slot","overridesResolver","props","styles","ownerState","absolute","light","orientation","vertical","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","_extends","flexShrink","borderWidth","borderStyle","borderColor","vars","divider","borderBottomWidth","bottom","left","dividerChannel","alpha","borderRightWidth","alignSelf","top","transform","flexDirection","borderLeft","DividerWrapper","wrapper","wrapperVertical","React","inProps","ref","useThemeProps","role","other","_objectWithoutPropertiesLoose","slots","composeClasses","getDividerUtilityClass","useUtilityClasses","_jsx","as","clsx"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1275.3857a963.chunk.js b/portal-ui/build/static/js/1275.3857a963.chunk.js
deleted file mode 100644
index 31b7e7409..000000000
--- a/portal-ui/build/static/js/1275.3857a963.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1275],{23804:function(e,n,t){t(72791);var r=t(11135),a=t(25787),i=t(61889),s=t(80184);n.Z=(0,a.Z)((function(e){return(0,r.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var n=e.classes,t=e.iconComponent,r=e.title,a=e.help;return(0,s.jsx)("div",{className:n.root,children:(0,s.jsxs)(i.ZP,{container:!0,children:[(0,s.jsxs)(i.ZP,{item:!0,xs:12,className:n.leftItems,children:[t,r]}),(0,s.jsx)(i.ZP,{item:!0,xs:12,className:n.helpText,children:a})]})})}))},46707:function(e,n,t){var r=t(1413),a=(t(72791),t(80184));n.Z=function(e){return(0,a.jsxs)("svg",(0,r.Z)((0,r.Z)({xmlns:"http://www.w3.org/2000/svg",className:"min-icon",fill:"currentcolor",viewBox:"0 0 256 256"},e),{},{children:[(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"certificate_svg__a",children:(0,a.jsx)("path",{"data-name":"Rect\\xE1ngulo 2156",fill:"#07193e",d:"M0 0h256v222.048H0z"})})}),(0,a.jsxs)("g",{"data-name":"Grupo 4763",transform:"translate(0 17)",clipPath:"url(#certificate_svg__a)",fill:"#07193e",children:[(0,a.jsx)("path",{"data-name":"Trazado 8152",d:"M240-.002H16a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h120l4.64-5.6 7.44-9.12A66.72 66.72 0 0 1 256 98.958v-82.96a16 16 0 0 0-16-16m-130.96 149.7H47.3a7.3 7.3 0 1 1 0-14.592h61.74a7.3 7.3 0 1 1 0 14.592m0-56H47.3a7.3 7.3 0 1 1 0-14.592h61.74a7.3 7.3 0 0 1 0 14.592m66.96-39.3a6.419 6.419 0 0 1-6.4 6.4H46.4a6.419 6.419 0 0 1-6.4-6.4v-1.792a6.419 6.419 0 0 1 6.4-6.4h123.2a6.419 6.419 0 0 1 6.4 6.4Z"}),(0,a.jsx)("path",{"data-name":"Trazado 8153",d:"M256 137.486a50.96 50.96 0 1 0-86.16 36.72l-15.52 18.96 7.2 28.88 29.28-35.68a50.018 50.018 0 0 0 28.4 0l29.28 35.68 7.2-28.88-15.52-18.96a50.75 50.75 0 0 0 15.84-36.72m-50.928 29.688a29.688 29.688 0 0 1-.072-59.376h.072a29.688 29.688 0 0 1 0 59.376"})]}),(0,a.jsx)("path",{"data-name":"Rect\\xE1ngulo 2157",fill:"none",d:"M0 0h256v256H0z"})]}))}},37798:function(e,n,t){t.r(n),t.d(n,{default:function(){return b}});var r=t(1413),a=t(72791),i=t(26181),s=t.n(i),o=t(75952),l=t(11135),c=t(25787),u=t(56028),d=t(61889),m=t(77196),f=t(63466),h=t(78029),x=t.n(h),p=t(56096),g=t(23814),v=t(27454),y=t(80184),j=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,r.Z)((0,r.Z)({},g.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,r=e.value,a=void 0===r?"":r,i=e.classes,s=void 0===i?{}:i;return(0,y.jsxs)("div",{className:s.container,children:[(0,y.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,y.jsx)("div",{className:s.inputWithCopy,children:(0,y.jsx)(m.Z,{value:a,readOnly:!0,endAdornment:(0,y.jsx)(f.Z,{position:"end",children:(0,y.jsx)(v.Z,{tooltip:"Copy",children:(0,y.jsx)(x(),{text:a,children:(0,y.jsx)(o.zx,{id:"copy-clipboard","aria-label":"copy",onClick:function(){},onMouseDown:function(){},style:{width:"28px",height:"28px",padding:"0px"},icon:(0,y.jsx)(p.TIy,{})})})})})})})]})})),Z=t(89357),C=function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+n),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},b=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{display:"flex",justifyContent:"flex-end",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,i=e.open,l=e.closeModal,c=e.entity;if(!t)return null;var m=s()(t,"console",null),f=s()(t,"idp",!1);return(0,y.jsx)(u.Z,{modalOpen:i,onClose:function(){l()},title:(0,y.jsx)("div",{className:n.promptTitle,children:(0,y.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,y.jsx)(p.tVY,{}),children:(0,y.jsxs)(d.ZP,{container:!0,children:[(0,y.jsxs)(d.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!f&&m&&(0,y.jsx)(a.Fragment,{children:(0,y.jsxs)(d.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,y.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(m)&&m.map((function(e,n){return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(j,{label:"Access Key",value:e.accessKey}),(0,y.jsx)(j,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(m)&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(j,{label:"Access Key",value:m.accessKey}),(0,y.jsx)(j,{label:"Secret Key",value:m.secretKey})]})]})}),(null===m||void 0===m)&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(j,{label:"Access Key",value:t.accessKey||""}),(0,y.jsx)(j,{label:"Secret Key",value:t.secretKey||""})]}),f?(0,y.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,y.jsxs)("div",{className:n.warningBlock,children:[(0,y.jsx)(Z.Z,{}),(0,y.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,y.jsx)(d.ZP,{item:!0,xs:12,className:n.buttonContainer,children:!f&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(v.Z,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,y.jsx)(o.zx,{id:"download-button",label:"Download for import",className:n.buttonSpacer,onClick:function(){var e={};m?e=Array.isArray(m)?m.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:m.url,accessKey:m.accessKey,secretKey:m.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};C("credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(p._8t,{}),variant:"callAction"})}),Array.isArray(m)&&m.length>1&&(0,y.jsx)(v.Z,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,y.jsx)(o.zx,{id:"download-all-button",label:"Download all access credentials",className:n.buttonSpacer,onClick:function(){var e={};m&&Array.isArray(m)&&m.length>1&&(e=m.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));C("all_credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(p._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}))},92217:function(e,n,t){var r=t(1413),a=t(72791),i=t(61889),s=t(30829),o=t(20068),l=t(64554),c=t(11135),u=t(25787),d=t(84570),m=t(23814),f=t(56096),h=t(75952),x=t(78029),p=t.n(x),g=t(90932),v=t(27454),y=t(80184);n.Z=(0,u.Z)((function(e){return(0,c.Z)((0,r.Z)({},m.YI))}))((function(e){var n=e.value,t=e.label,r=void 0===t?"":t,c=e.tooltip,u=void 0===c?"":c,m=e.mode,x=void 0===m?"json":m,j=e.classes,Z=e.onBeforeChange,C=(e.readOnly,e.editorHeight),b=void 0===C?"250px":C;return(0,y.jsxs)(a.Fragment,{children:[(0,y.jsx)(i.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,y.jsxs)(s.Z,{className:j.inputLabel,children:[(0,y.jsx)("span",{children:r}),""!==u&&(0,y.jsx)("div",{className:j.tooltipContainer,children:(0,y.jsx)(o.Z,{title:u,placement:"top-start",children:(0,y.jsx)("div",{className:j.tooltip,children:(0,y.jsx)(d.Z,{})})})})]})}),(0,y.jsx)(i.ZP,{item:!0,xs:12,style:{maxHeight:b,overflow:"auto",border:"1px solid #eaeaea"},children:(0,y.jsx)(g.Z,{value:n,language:x,onChange:function(e){Z(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:b||"initial",color:"#000000"}})}),(0,y.jsx)(i.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,y.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,y.jsx)(v.Z,{tooltip:"Copy to Clipboard",children:(0,y.jsx)(p(),{text:n,children:(0,y.jsx)(h.zx,{type:"button",id:"copy-code-mirror",icon:(0,y.jsx)(f.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},54639:function(e,n,t){t.d(n,{Z:function(){return j}});var r=t(29439),a=t(1413),i=t(72791),s=t(26181),o=t.n(s),l=t(61889),c=t(30829),u=t(20068),d=t(13400),m=t(99663),f=t(86711),h=t(11135),x=t(25787),p=t(23814),g=t(84570),v=t(22512),y=t(80184),j=(0,x.Z)((function(e){return(0,h.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},p.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},p.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var n=e.label,t=e.classes,a=e.onChange,s=e.id,h=e.name,x=e.disabled,p=void 0!==x&&x,j=e.tooltip,Z=void 0===j?"":j,C=e.required,b=e.error,S=void 0===b?"":b,_=e.accept,N=void 0===_?"":_,A=e.value,T=void 0===A?"":A,P=(0,i.useState)(!1),I=(0,r.Z)(P,2),w=I[0],k=I[1];return(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(t.fileInputField," ").concat(t.fieldBottom," ").concat(t.fieldContainer," ").concat(""!==S?t.errorInField:""),children:[""!==n&&(0,y.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==S?t.fieldLabelError:""," ").concat(t.inputLabel),children:[(0,y.jsxs)("span",{children:[n,C?"*":""]}),""!==Z&&(0,y.jsx)("div",{className:t.tooltipContainer,children:(0,y.jsx)(u.Z,{title:Z,placement:"top-start",children:(0,y.jsx)("div",{className:t.tooltip,children:(0,y.jsx)(g.Z,{})})})})]}),w||""===T?(0,y.jsxs)("div",{className:t.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:h,onChange:function(e){var n=o()(e,"target.files[0].name","");!function(e,n){var t=e.target.files[0],r=new FileReader;r.readAsDataURL(t),r.onload=function(){var e=r.result;if(e){var t=e.toString().split("base64,");2===t.length&&n(t[1])}}}(e,(function(e){a(e,n)}))},accept:N,required:C,disabled:p,className:t.fileInputField}),""!==T&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){k(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(f.Z,{})}),""!==S&&(0,y.jsx)(v.Z,{errorMessage:S})]}):(0,y.jsxs)("div",{className:t.fileReselect,children:[(0,y.jsx)("div",{className:t.valueString,children:T}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){k(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},56028:function(e,n,t){var r=t(29439),a=t(1413),i=t(72791),s=t(78687),o=t(13400),l=t(55646),c=t(5574),u=t(65661),d=t(39157),m=t(11135),f=t(25787),h=t(23814),x=t(25469),p=t(29823),g=t(28057),v=t(87995),y=t(80184);n.Z=(0,f.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)({},h.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},h.sN))}))((function(e){var n=e.onClose,t=e.modalOpen,m=e.title,f=e.children,h=e.classes,j=e.wideLimit,Z=void 0===j||j,C=e.noContentPadding,b=e.titleIcon,S=void 0===b?null:b,_=(0,x.TL)(),N=(0,i.useState)(!1),A=(0,r.Z)(N,2),T=A[0],P=A[1],I=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,i.useEffect)((function(){_((0,v.MK)(""))}),[_]),(0,i.useEffect)((function(){if(I){if(""===I.message)return void P(!1);"error"!==I.type&&P(!0)}}),[I]);var w=Z?{classes:{paper:h.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},k="";return I&&(k=I.detailedErrorMsg,(""===I.detailedErrorMsg||I.detailedErrorMsg.length<5)&&(k=I.message)),(0,y.jsxs)(c.Z,(0,a.Z)((0,a.Z)({open:t,classes:h},w),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:h.root,children:[(0,y.jsxs)(u.Z,{className:h.title,children:[(0,y.jsxs)("div",{className:h.titleText,children:[S," ",m]}),(0,y.jsx)("div",{className:h.closeContainer,children:(0,y.jsx)(o.Z,{"aria-label":"close",id:"close",className:h.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,y.jsx)(p.Z,{})})})]}),(0,y.jsx)(g.Z,{isModal:!0}),(0,y.jsx)(l.Z,{open:T,className:h.snackBarModal,onClose:function(){P(!1),_((0,v.MK)(""))},message:k,ContentProps:{className:"".concat(h.snackBar," ").concat(I&&"error"===I.type?h.errorSnackBar:"")},autoHideDuration:I&&"error"===I.type?1e4:5e3}),(0,y.jsx)(d.Z,{className:C?"":h.content,children:f})]}))}))},45997:function(e,n,t){t.r(n),t.d(n,{default:function(){return Je}});var r=t(29439),a=t(1413),i=t(72791),s=t(26181),o=t.n(s),l=t(78687),c=t(61889),u=t(40986),d=t(11135),m=t(23814),f=t(28371),h=t(25469),x=t(93433),p=t(25787),g=t(35527),v=t(13400),y=t(94721),j=t(84741),Z=t(40968),C=t(37516),b=t(21435),S=t(42419),_=t(51979),N=t(76773),A=t(90673),T=t(80184),P=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,marginBottom:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},wrapperContainer:{display:"flex",marginBottom:15},envVarRow:{display:"flex",alignItems:"center",justifyContent:"flex-start","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.oO),m.AK),m.DF))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeMinIO})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.exposeConsole})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.setDomains})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.consoleDomain})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.minioDomains})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.envVars})),P=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),I=(0,i.useState)({}),w=(0,r.Z)(I,2),k=w[0],R=w[1],F=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];if(f&&(e=[].concat((0,x.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:P.runAsUser,customValidation:""===P.runAsUser||parseInt(P.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:P.runAsGroup,customValidation:""===P.runAsGroup||parseInt(P.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:P.fsGroup,customValidation:""===P.fsGroup||parseInt(P.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),u){var n=m.map((function(e,n){return{fieldKey:"minio-domain-".concat(n.toString()),required:!1,value:e,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?$/,customPatternMessage:"MinIO domain is not in the form of http|https://subdomain.domain"}}));e=[].concat((0,x.Z)(e),(0,x.Z)(n),[{fieldKey:"console_domain",required:!1,value:d,pattern:/^(https?):\/\/([a-zA-Z0-9\-.]+)(:[0-9]+)?(\/[a-zA-Z0-9\-./]*)?$/,customPatternMessage:"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2"}])}var r=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(r).length})),R(r)}),[t,f,P,u,d,m]);var D=function(e){R((0,j.he)(k,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Configure"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Basic configurations for tenant management"})]}),(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h4",{className:n.h3Section,children:"Services"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Whether the tenant's services should request an external IP via LoadBalancer service type."})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:s,onChange:function(e){var n=e.target.checked;F("exposeMinIO",n)},label:"Expose MinIO Service"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:o,onChange:function(e){var n=e.target.checked;F("exposeConsole",n)},label:"Expose Console Service"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"custom_domains",id:"custom_domains",name:"custom_domains",checked:u,onChange:function(e){var n=e.target.checked;F("setDomains",n)},label:"Set Custom Domains"})}),u&&(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"Custom Domains for MinIO"}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{id:"console_domain",name:"console_domain",onChange:function(e){F("consoleDomain",e.target.value),D("tenant_securityContext_runAsUser")},label:"Console Domain",value:d,placeholder:"Eg. http://subdomain.domain:port/subpath1/subpath2",error:k.console_domain||""})}),(0,T.jsxs)("div",{children:[(0,T.jsx)("h4",{children:"MinIO Domains"}),(0,T.jsx)("div",{className:"".concat(n.responsiveSectionItem),children:m.map((function(e,r){return(0,T.jsxs)("div",{className:"".concat(n.containerItem," ").concat(n.wrapperContainer),children:[(0,T.jsx)(b.Z,{id:"minio-domain-".concat(r.toString()),name:"minio-domain-".concat(r.toString()),onChange:function(e){!function(e,n){var t=(0,x.Z)(m);t[n]=e,F("minioDomains",t)}(e.target.value,r)},label:"MinIO Domain ".concat(r+1),value:e,placeholder:"Eg. http://subdomain.domain",error:k["minio-domain-".concat(r.toString())]||""}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.x_)())},disabled:r!==m.length-1,children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.JL)(r))},disabled:m.length<=1,children:(0,T.jsx)(_.Z,{})})})]},"minio-domain-key-".concat(r.toString()))}))})]})]})]})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)(C.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:f,onChange:function(e){var n=e.target.checked;F("tenantCustom",n)},label:"Security Context"})}),f&&(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for MinIO"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsUser:e.target.value})),D("tenant_securityContext_runAsUser")},label:"Run As User",value:P.runAsUser,required:!0,error:k.tenant_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsGroup:e.target.value})),D("tenant_securityContext_runAsGroup")},label:"Run As Group",value:P.runAsGroup,required:!0,error:k.tenant_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:"".concat(n.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)(b.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroup:e.target.value})),D("tenant_securityContext_fsGroup")},label:"FsGroup",value:P.fsGroup,required:!0,error:k.tenant_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.containerItem,children:(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:P.fsGroupChangePolicy,onChange:function(e){F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:P.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("tenantSecurityContext",(0,a.Z)((0,a.Z)({},P),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})}),(0,T.jsx)(y.Z,{}),(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Additional Environment Variables"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Define additional environment variables to be used by your MinIO pods"})]}),(0,T.jsx)(c.ZP,{container:!0,children:p.map((function(e,r){return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:"".concat(n.formFieldRow," ").concat(n.envVarRow),children:[(0,T.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,T.jsx)(b.Z,{id:"env_var_key",name:"env_var_key",label:"Key",value:e.key,onChange:function(e){var n=(0,x.Z)(p);t((0,N.Ct)(n.map((function(n,t){return t===r?{key:e.target.value,value:n.value}:n}))))},index:r},"env_var_key_".concat(r.toString()))}),(0,T.jsx)(c.ZP,{item:!0,xs:5,className:n.fileItem,children:(0,T.jsx)(b.Z,{id:"env_var_value",name:"env_var_value",label:"Value",value:e.value,onChange:function(e){var n=(0,x.Z)(p);t((0,N.Ct)(n.map((function(n,t){return t===r?{key:n.key,value:e.target.value}:n}))))},index:r},"env_var_value_".concat(r.toString()))}),(0,T.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=(0,x.Z)(p);e.push({key:"",value:""}),t((0,N.Ct)(e))},disabled:r!==p.length-1,children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=p.filter((function(e,n){return n!==r}));t((0,N.Ct)(e))},disabled:p.length<=1,children:(0,T.jsx)(_.Z,{})})})]})]},"tenant-envVar-".concat(r.toString()))}))})]})})),I=t(83679),w=t(20890),k=t(20068),R=t(72455),F=t(27247),D=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({adUserDnRows:{display:"flex",marginBottom:10},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),G=function(){var e=(0,h.TL)(),n=D(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADSkipTLS})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerInsecure})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchBaseDN})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupSearchFilter})),m=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNs})),f=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADGroupDNs})),p=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindDN})),g=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADLookupBindPassword})),y=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchBaseDN})),_=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADUserDNSearchFilter})),A=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.ADServerStartTLS})),P=(0,i.useState)({}),I=(0,r.Z)(P,2),R=I[0],G=I[1],K=(0,i.useCallback)((function(n,t){e((0,N.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),E=function(e){G((0,j.he)(R,e))};return(0,i.useEffect)((function(){var n=[];"AD"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"AD_URL",required:!0,value:a},{fieldKey:"ad_lookupBindDN",required:!0,value:p}]));var r=(0,Z.R)(n);e((0,N.NO)({pageName:"identityProvider",valid:0===Object.keys(r).length})),G(r)}),[p,t,a,u,d,m,f,e]),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){K("ADURL",e.target.value),E("AD_URL")},label:"LDAP Server Address",value:a,placeholder:"ldap-server:636",error:R.AD_URL||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:s,onChange:function(e){var n=e.target.checked;K("ADSkipTLS",n)},label:"Skip TLS Verification"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:o,onChange:function(e){var n=e.target.checked;K("ADServerInsecure",n)},label:"Server Insecure"})}),o?(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)(w.Z,{className:n.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,T.jsx)("br",{})]}):null,(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:A,onChange:function(e){var n=e.target.checked;K("ADServerStartTLS",n)},label:"Start TLS connection to AD/LDAP server"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){K("ADLookupBindDN",e.target.value),E("ad_lookupBindDN")},label:"Lookup Bind DN",value:p,placeholder:"cn=admin,dc=min,dc=io",error:R.ad_lookupBindDN||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){K("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:g,placeholder:"admin"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){K("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:y,placeholder:"dc=min,dc=io"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){K("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:_,placeholder:"(sAMAcountName=%s)"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){K("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:u,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){K("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:d,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:m.map((function(t,r){return(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)("div",{className:n.adUserDnRows,children:[(0,T.jsx)(b.Z,{id:"ad-userdn-".concat(r.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(r.toString()),value:m[r],onChange:function(n){e((0,N.hK)({index:r,userDN:n.target.value})),E("ad-userdn-".concat(r.toString()))},index:r,error:R["ad-userdn-".concat(r.toString())]||""},"csv-ad-userdn-".concat(r.toString())),(0,T.jsxs)("div",{className:n.buttonTray,children:[(0,T.jsx)(k.Z,{title:"Add User","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){e((0,N.Y$)())},children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)(k.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",style:{marginLeft:16},onClick:function(){m.length>1&&e((0,N.GU)(r))},children:(0,T.jsx)(F.Z,{})})})]})]})},"identityField-".concat(r.toString()))}))})]}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"List of group DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:f.map((function(t,r){return(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)("div",{className:n.adUserDnRows,children:[(0,T.jsx)(b.Z,{id:"ad-groupdn-".concat(r.toString()),label:"",placeholder:"",name:"ad-groupdn-".concat(r.toString()),value:f[r],onChange:function(n){e((0,N.in)({index:r,userDN:n.target.value})),E("ad-groupdn-".concat(r.toString()))},index:r,error:R["ad-groupdn-".concat(r.toString())]||""},"csv-ad-groupdn-".concat(r.toString())),(0,T.jsxs)("div",{className:n.buttonTray,children:[(0,T.jsx)(k.Z,{title:"Add Group","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){e((0,N.Fe)())},children:(0,T.jsx)(S.Z,{})})}),(0,T.jsx)(k.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(v.Z,{size:"small",style:{marginLeft:16},onClick:function(){f.length>1&&e((0,N.Hu)(r))},children:(0,T.jsx)(F.Z,{})})})]})]})},"identityField-".concat(r.toString()))}))})]})]})},K=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},m.QV),m.DF),m.oO),m.AK))})),E=function(){var e=(0,h.TL)(),n=K(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDConfigurationURL})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClientID})),o=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDSecretID})),u=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDCallbackURL})),d=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDClaimName})),m=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.openIDScopes})),f=(0,i.useState)({}),p=(0,r.Z)(f,2),g=p[0],v=p[1],y=(0,i.useCallback)((function(n,t){e((0,N.HM)({pageName:"identityProvider",field:n,value:t}))}),[e]),C=function(e){v((0,j.he)(g,e))};return(0,i.useEffect)((function(){var n=[];"OpenID"===t&&(n=[].concat((0,x.Z)(n),[{fieldKey:"openID_CONFIGURATION_URL",required:!0,value:a},{fieldKey:"openID_clientID",required:!0,value:s},{fieldKey:"openID_secretID",required:!0,value:o},{fieldKey:"openID_claimName",required:!0,value:d}]));var r=(0,Z.R)(n);e((0,N.NO)({pageName:"identityProvider",valid:0===Object.keys(r).length})),v(r)}),[t,s,o,a,d,e]),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){y("openIDConfigurationURL",e.target.value),C("openID_CONFIGURATION_URL")},label:"Configuration URL",value:a,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:g.openID_CONFIGURATION_URL||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){y("openIDClientID",e.target.value),C("openID_clientID")},label:"Client ID",value:s,error:g.openID_clientID||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){y("openIDSecretID",e.target.value),C("openID_secretID")},label:"Secret ID",value:o,error:g.openID_secretID||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){y("openIDCallbackURL",e.target.value),C("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:g.openID_callbackURL||""})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){y("openIDClaimName",e.target.value),C("openID_claimName")},label:"Claim Name",value:d,error:g.openID_claimName||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){y("openIDScopes",e.target.value),C("openID_scopes")},label:"Scopes",value:m})})]})},L=t(22918),z=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}}},m.QV),m.DF),m.oO),m.AK))})),O=function(){var e=(0,h.TL)(),n=z(),t=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.idpSelection})),a=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.accessKeys})),s=(0,l.v9)((function(e){return e.createTenant.fields.identityProvider.secretKeys})),o=(0,i.useState)({}),c=(0,r.Z)(o,2),u=c[0],d=c[1],m=function(e){d((0,j.he)(u,e))};return(0,i.useEffect)((function(){var n=[];if("Built-in"===t){n=(0,x.Z)(n);for(var r=0;r0)&&(U=!0);var B=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"encryption",field:e,value:n}))}),[t]),H=function(e){V((0,j.he)(M,e))};return(0,i.useEffect)((function(){var e=[];d&&(e=[].concat((0,x.Z)(e),[{fieldKey:"rawConfiguration",required:u>0,value:o},{fieldKey:"replicas",required:!0,value:s,customValidation:parseInt(s)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),E&&(e=[].concat((0,x.Z)(e),[{fieldKey:"serverKey",required:!w,value:F.encoded_key},{fieldKey:"serverCert",required:!w,value:F.encoded_cert},{fieldKey:"clientKey",required:!w,value:D.encoded_key},{fieldKey:"clientCert",required:!w,value:D.encoded_cert}])));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"encryption",valid:0===Object.keys(n).length})),V(n)}),[o,u,d,m,f,p,v,y,S,_,t,w,E,F.encoded_key,F.encoded_cert,D.encoded_key,D.encoded_cert,L,s]),(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Encryption"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,justifyContent:"end",textAlign:"right",children:(0,T.jsx)(C.Z,{label:"",indicatorLabels:["Enabled","Disabled"],checked:d,value:"tenant_encryption",id:"tenant-encryption",name:"tenant-encryption",onChange:function(e){var n=e.target.checked;B("enableEncryption",n)},description:"",disabled:!U})})]}),(0,T.jsxs)(c.ZP,{container:!0,spacing:1,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"MinIO Server-Side Encryption (SSE) protects objects as part of write operations, allowing clients to take advantage of server processing power to secure objects at the storage layer (encryption-at-rest). SSE also provides key functionality to regulatory and compliance requirements around secure locking and erasure."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),d&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)(ie.Z,{value:u,onChange:function(e,n){B("encryptionTab",n)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,T.jsx)(se.Z,{id:"kms-options",label:"Options"}),(0,T.jsx)(se.Z,{id:"kms-raw-configuration",label:"Raw Edit"})]})}),u?(0,T.jsx)(i.Fragment,{children:(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(oe.Z,{value:o,mode:"yaml",onBeforeChange:function(e,n,t){B("rawConfiguration",t)},editorHeight:"550px"})})}):(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.encryptionTypeOptions,children:(0,T.jsx)(I.Z,{currentSelection:m,id:"encryptionType",name:"encryptionType",label:"KMS",onChange:function(e){B("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===m&&(0,T.jsx)($,{}),"azure"===m&&(0,T.jsx)(J,{}),"gcp"===m&&(0,T.jsx)(ee,{}),"aws"===m&&(0,T.jsx)(ae,{}),"gemalto"===m&&(0,T.jsx)(te,{})]}),(0,T.jsx)("div",{className:n.headerElement,children:(0,T.jsx)("h4",{className:n.h3Section,children:"Additional Configurations"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(C.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:P||!w,onChange:function(e){var n=e.target.checked;B("enableCustomCertsForKES",n)},label:"Custom Certificates",disabled:!w})}),(P||!w)&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{container:!0,children:(0,T.jsx)(c.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"Encryption server certificates"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.uN)({key:"key",fileName:n,value:e})),H("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:M.serverKey||"",value:F.key,required:!w}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.uN)({key:"cert",fileName:n,value:e})),H("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:M.serverCert||"",value:F.cert,required:!w})]})})}),(0,T.jsx)(c.ZP,{container:!0,style:{marginBottom:15},children:(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"MinIO mTLS certificates (connection between MinIO and the Encryption server)"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Ud)({key:"key",fileName:n,value:e})),H("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:M.clientKey||"",value:D.key,required:!w}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Ud)({key:"cert",fileName:n,value:e})),H("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:M.clientCert||"",value:D.cert,required:!w})]})})}),(0,T.jsx)(c.ZP,{container:!0,className:n.mutualTlsConfig,children:(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"KMS mTLS certificates (connection between the Encryption server and the KMS)"}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Tr)({key:"key",fileName:n,value:e})),H("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:G.key}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.Tr)({key:"cert",fileName:n,value:e})),H("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:G.cert}),(0,T.jsx)(q.Z,{onChange:function(e,n){t((0,N.b9)({fileName:n,value:e})),H("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:K.cert})]})})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,classes:n.formFieldRow,children:(0,T.jsx)(b.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){B("replicas",e.target.value),H("replicas")},label:"Replicas",value:s,required:!0,error:M.replicas||""})}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,style:{marginTop:15},children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for KES pods"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsUser:e.target.value})),H("kes_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:M.kes_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsGroup:e.target.value})),H("kes_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:M.kes_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(b.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{fsGroup:e.target.value})),H("kes_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:M.kes_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(n.formFieldRow," ").concat(n.rightSpacer),children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:L.fsGroupChangePolicy,onChange:function(e){B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var n=e.target.checked;B("kesSecurityContext",(0,a.Z)((0,a.Z)({},L),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})]})]})]})})),ce=t(4942),ue=t(81207),de=t(47919),me=t(45660),fe=t(87995),he=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({overlayAction:{marginLeft:10,display:"flex",alignItems:"center","& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},affinityRow:{marginBottom:10,display:"flex"}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.fields.affinity.podAffinity})),o=(0,l.v9)((function(e){return e.createTenant.fields.affinity.nodeSelectorLabels})),u=(0,l.v9)((function(e){return e.createTenant.fields.affinity.withPodAntiAffinity})),d=(0,l.v9)((function(e){return e.createTenant.nodeSelectorPairs})),m=(0,l.v9)((function(e){return e.createTenant.tolerations})),f=(0,i.useState)({}),p=(0,r.Z)(f,2),y=p[0],j=p[1],S=(0,i.useState)(!0),P=(0,r.Z)(S,2),w=P[0],k=P[1],R=(0,i.useState)({}),F=(0,r.Z)(R,2),D=F[0],G=F[1],K=(0,i.useState)([]),E=(0,r.Z)(K,2),L=E[0],z=E[1],O=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"affinity",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){w&&ue.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){k(!1),G(e);var n=[];for(var t in e)n.push({label:t,value:t});z(n)})).catch((function(e){k(!1),t((0,fe.zb)(e)),G({})}))}),[t,w]),(0,i.useEffect)((function(){if(d){var e=d.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,n,t){return t.indexOf(e)===n})).join("&");O("nodeSelectorLabels",e)}}),[d,O]),(0,i.useEffect)((function(){var e=[];if("nodeSelector"===s){var n=!0,r=o.split("&");1===r.length&&""===r[0]&&(n=!1),r.forEach((function(e,t){var a=e.split("=");2!==a.length&&(n=!1),t+1!==r.length&&(""!==a[0]&&""!==a[1]||(n=!1))})),e=[].concat((0,x.Z)(e),[{fieldKey:"labels",required:!0,value:o,customValidation:!n,customValidationMessage:"You need to add at least one label key-pair"}])}var a=(0,Z.R)(e);t((0,N.NO)({pageName:"affinity",valid:0===Object.keys(a).length})),j(a)}),[t,s,o]);var M=function(e,n,r){var i=(0,a.Z)((0,a.Z)({},m[e]),{},(0,ce.Z)({},n,r));t((0,N.iU)({index:e,tolerationValue:i}))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Pod Placement"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,T.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,T.jsx)("div",{className:n.label,children:"Type"}),(0,T.jsx)("div",{className:"".concat(n.descriptionText," ").concat(n.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,T.jsx)(c.ZP,{item:!0,className:n.radioField,children:(0,T.jsx)(I.Z,{currentSelection:s,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){O("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===s&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(C.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:u,onChange:function(e){var n=e.target.checked;O("withPodAntiAffinity",n)},label:"With Pod Anti-Affinity"})}),(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsx)("h3",{children:"Labels"}),(0,T.jsx)("span",{className:n.error,children:y.labels}),(0,T.jsx)(c.ZP,{container:!0,children:d&&d.map((function(e,r){return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,T.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelKey,children:[L.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var n=e.target.value,a={key:n,value:D[n][0]},i=(0,x.Z)(d);i[r]=a,t((0,N.i$)(i))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:L}),0===L.length&&(0,T.jsx)(b.Z,{id:"nodeselector-key-".concat(r.toString()),label:"",name:"nodeselector-".concat(r.toString()),value:e.key,onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},index:r,placeholder:"Key"})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:5,className:n.affinityLabelValue,children:[L.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:D[e.key]?D[e.key].map((function(e){return{label:e,value:e}})):[]}),0===L.length&&(0,T.jsx)(b.Z,{id:"nodeselector-value-".concat(r.toString()),label:"",name:"nodeselector-".concat(r.toString()),value:e.value,onChange:function(e){var n=(0,x.Z)(d);n[r]={key:n[r].key,value:e.target.value},t((0,N.i$)(n))},index:r,placeholder:"value"})]}),(0,T.jsxs)(c.ZP,{item:!0,xs:2,className:n.rowActions,children:[(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=(0,x.Z)(d);L.length>0?e.push({key:L[0].value,value:D[L[0].value][0]}):e.push({key:"",value:""}),t((0,N.i$)(e))},disabled:r!==d.length-1,children:(0,T.jsx)(de.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){var e=d.filter((function(e,n){return n!==r}));t((0,N.i$)(e))},disabled:d.length<=1,children:(0,T.jsx)(_.Z,{})})})]})]},"affinity-keyVal-".concat(r.toString()))}))})]})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.affinityConfigField,children:(0,T.jsxs)(c.ZP,{item:!0,className:n.affinityFieldLabel,children:[(0,T.jsx)("h3",{children:"Tolerations"}),(0,T.jsx)("span",{className:n.error,children:y.tolerations}),(0,T.jsx)(c.ZP,{container:!0,children:m&&m.map((function(e,r){var a;return(0,T.jsxs)(c.ZP,{item:!0,xs:12,className:n.affinityRow,children:[(0,T.jsx)(me.Z,{effect:e.effect,onEffectChange:function(e){M(r,"effect",e)},tolerationKey:e.key,onTolerationKeyChange:function(e){M(r,"key",e)},operator:e.operator,onOperatorChange:function(e){M(r,"operator",e)},value:e.value,onValueChange:function(e){M(r,"value",e)},tolerationSeconds:(null===(a=e.tolerationSeconds)||void 0===a?void 0:a.seconds)||0,onSecondsChange:function(e){M(r,"tolerationSeconds",{seconds:e})},index:r}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){t((0,N.ly)())},disabled:r!==m.length-1,children:(0,T.jsx)(de.Z,{})})}),(0,T.jsx)("div",{className:n.overlayAction,children:(0,T.jsx)(v.Z,{size:"small",onClick:function(){return t((0,N.JX)(r))},disabled:m.length<=1,children:(0,T.jsx)(_.Z,{})})})]},"affinity-keyVal-".concat(r.toString()))}))})]})})]})})),xe=t(32291),pe=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.configure.customImage})),s=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageName})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.customDockerhub})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistry})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryUsername})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.imageRegistryPassword})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusEnabled})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantCustom})),v=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchEnabled})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchVolumeSize})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusVolumeSize})),_=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSelectedStorageClass})),A=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchImage})),P=(0,l.v9)((function(e){return e.createTenant.fields.configure.kesImage})),I=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresImage})),w=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresInitImage})),k=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSelectedStorageClass})),R=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusImage})),F=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSidecarImage})),D=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusInitImage})),G=(0,i.useState)({}),K=(0,r.Z)(G,2),E=K[0],L=K[1],z=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];f&&(e=[].concat((0,x.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:k,customValidation:""===k,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:S,customValidation:""===S||parseInt(S)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),v&&(e=[].concat((0,x.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:_,customValidation:""===_,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),a&&(e=[].concat((0,x.Z)(e),[{fieldKey:"image",required:!1,value:s,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/operator:VERSION'"},{fieldKey:"kesImage",required:!1,value:P,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:I,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:w,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:R,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"registry",required:!0,value:u},{fieldKey:"registryUsername",required:!0,value:d},{fieldKey:"registryPassword",required:!0,value:m}])));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),L(n)}),[a,s,A,P,I,w,R,F,D,o,u,d,m,t,f,p,v,k,S,_,y]);var O=function(e){L((0,j.he)(E,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Container Images"}),(0,T.jsx)("span",{className:n.descriptionText,children:"Specify the container images used by the Tenant and it's features."})]}),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"image",name:"image",onChange:function(e){z("imageName",e.target.value),O("image")},label:"MinIO",value:s,error:E.image||"",placeholder:"minio/minio:RELEASE.2022-02-26T02-54-46Z"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"kesImage",name:"kesImage",onChange:function(e){z("kesImage",e.target.value),O("kesImage")},label:"KES",value:P,error:E.kesImage||"",placeholder:"minio/kes:v0.17.6"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Log Search"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){z("logSearchImage",e.target.value),O("logSearchImage")},label:"API",value:A,error:E.logSearchImage||"",placeholder:"minio/operator:v4.4.22"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){z("logSearchPostgresImage",e.target.value),O("logSearchPostgresImage")},label:"PostgreSQL",value:I,error:E.logSearchPostgresImage||"",placeholder:"library/postgres:13"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){z("logSearchPostgresInitImage",e.target.value),O("logSearchPostgresInitImage")},label:"PostgreSQL Init",value:w,error:E.logSearchPostgresInitImage||"",placeholder:"library/busybox:1.33.1"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Monitoring"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){z("prometheusImage",e.target.value),O("prometheusImage")},label:"Prometheus",value:R,error:E.prometheusImage||"",placeholder:"quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){z("prometheusSidecarImage",e.target.value),O("prometheusSidecarImage")},label:"Prometheus Sidecar",value:F,error:E.prometheusSidecarImage||"",placeholder:"library/alpine:latest"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){z("prometheusInitImage",e.target.value),O("prometheusInitImage")},label:"Prometheus Init",value:D,error:E.prometheusInitImage||"",placeholder:"library/busybox:1.33.1"})})]}),a&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)("h4",{children:"Custom Container Registry"})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(C.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:o,onChange:function(e){var n=e.target.checked;z("customDockerhub",n)},label:"Use a private container registry"})})]}),o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registry",name:"registry",onChange:function(e){z("imageRegistry",e.target.value)},label:"Endpoint",value:u,error:E.registry||"",placeholder:"https://index.docker.io/v1/",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){z("imageRegistryUsername",e.target.value)},label:"Username",value:d,error:E.registryUsername||"",required:!0})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(b.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){z("imageRegistryPassword",e.target.value)},label:"Password",value:m,error:E.registryPassword||"",required:!0})})]})]})})),ge=t(74794),ve=t(84669),ye=t(79836),je=t(53382),Ze=t(53994),Ce=t(35855),be=t(45248),Se=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.nodes})),r=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesMemoryRequest})),a=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParity})),s=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.distribution})),o=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.ecParityCalc})),c=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.resourcesCPURequest})),u=(0,l.v9)((function(e){return e.createTenant.fields.tenantSize.integrationSelection})),d=o.storageFactors.find((function(e){return e.erasureCode===a}));return(0,T.jsxs)("div",{className:n.root,children:[(0,T.jsx)("h4",{children:"Resource Allocation"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ye.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(je.Z,{children:[(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Number of Servers"}),(0,T.jsx)(Ze.Z,{align:"right",children:parseInt(t)>0?t:"-"})]}),""===u.typeSelection&&""===u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(Ze.Z,{align:"right",children:s?s.disks:"-"})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Drive Capacity"}),(0,T.jsx)(Ze.Z,{align:"right",children:s?(0,be.ae)(s.pvSize):"-"})]})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Total Volumes"}),(0,T.jsx)(Ze.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===u.typeSelection&&""===u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Memory per Node"}),(0,T.jsxs)(Ze.Z,{align:"right",children:[r," Gi"]})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,T.jsx)(Ze.Z,{style:{borderBottom:0},align:"right",children:c})]})]})]})}),0===o.error&&d&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("h4",{children:"Erasure Code Configuration"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ye.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(je.Z,{children:[(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"EC Parity"}),(0,T.jsx)(Ze.Z,{align:"right",children:""!==a?a:"-"})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Raw Capacity"}),(0,T.jsx)(Ze.Z,{align:"right",children:(0,be.ae)(o.rawCapacity)})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Usable Capacity"}),(0,T.jsx)(Ze.Z,{align:"right",children:(0,be.ae)(d.maxCapacity)})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,T.jsx)(Ze.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(d.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==u.typeSelection&&""!==u.storageClass&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("h4",{children:"Single Instance Configuration"}),(0,T.jsx)(y.Z,{}),(0,T.jsx)(ye.Z,{className:n.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(je.Z,{children:[(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"CPU"}),(0,T.jsx)(Ze.Z,{align:"right",children:0!==u.CPU?u.CPU:"-"})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Memory"}),(0,T.jsx)(Ze.Z,{align:"right",children:0!==u.memory?"".concat(u.memory," Gi"):"-"})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(Ze.Z,{align:"right",children:0!==u.drivesPerServer?"".concat(u.drivesPerServer):"-"})]}),(0,T.jsxs)(Ce.Z,{children:[(0,T.jsx)(Ze.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,T.jsxs)(Ze.Z,{style:{borderBottom:0},align:"right",children:[u.driveSize.driveSize,u.driveSize.sizeUnit]})]})]})})]})]})})),_e=t(19720),Ne=t(45884),Ae=t(46078),Te=t(51691),Pe=t(23508),Ie=t(56096),we=t(98222),ke=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},m.oO),m.Qw))})),Re=function(){var e=(0,h.TL)(),n=ke(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),r=(0,l.v9)((function(e){return e.createTenant.addNSLoading})),a=(0,l.v9)((function(e){return e.createTenant.addNSOpen}));return(0,T.jsx)(Pe.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{variant:"callAction"},isOpen:a,titleIcon:(0,T.jsx)(Ie.EjK,{}),isLoading:r,onConfirm:function(){e((0,we.QD)())},onClose:function(){e((0,N.pb)())},confirmationContent:(0,T.jsxs)(i.Fragment,{children:[r&&(0,T.jsx)(u.Z,{}),(0,T.jsxs)(Te.Z,{children:["Are you sure you want to add a namespace called",(0,T.jsx)("br",{}),(0,T.jsx)("b",{className:n.wrapText,children:t}),"?"]})]})})},Fe=t(48573),De=t.n(Fe),Ge=function(e){e.formToRender;var n=(0,h.TL)(),t=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.namespace})),r=(0,l.v9)((function(e){return e.createTenant.showNSCreateButton})),a=(0,l.v9)((function(e){return e.createTenant.validationErrors.namespace})),s=(0,l.v9)((function(e){return e.createTenant.addNSOpen})),o=(0,i.useMemo)((function(){return De()((function(){n((0,we.IO)())}),500)}),[n]);(0,i.useEffect)((function(){if(""!==t)return o(),o.cancel}),[o,t]);return(0,T.jsxs)(i.Fragment,{children:[s&&(0,T.jsx)(Re,{}),(0,T.jsx)(b.Z,{id:"namespace",name:"namespace",onChange:function(e){n((0,N.Zx)(e.target.value))},label:"Namespace",value:t,error:a||"",overlayId:"add-namespace",overlayIcon:r?(0,T.jsx)(de.Z,{}):null,overlayAction:function(){n((0,N.Oj)())},required:!0})]})},Ke=function(){var e=(0,h.TL)(),n=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.tenantName})),t=(0,l.v9)((function(e){return e.createTenant.validationErrors["tenant-name"]}));return(0,T.jsx)(b.Z,{id:"tenant-name",name:"tenant-name",onChange:function(n){e((0,N.V7)(n.target.value))},label:"Name",value:n,required:!0,error:t||""})},Ee=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({sizePreview:{marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2,marginTop:20}},m.DF),m.oO),m.AK))}))((function(e){var n=e.classes,t=e.formToRender,r=(0,h.TL)(),a=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),s=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageType})),u=(0,l.v9)((function(e){return e.createTenant.storageClasses})),d=(0,l.v9)(Ae.$4),m=(0,i.useCallback)((function(e,n){r((0,N.HM)({pageName:"nameTenant",field:e,value:n}))}),[r]);return(0,i.useEffect)((function(){var e=t===Ne.cy.default&&u.length>0||t!==Ne.cy.default&&""!==s;r((0,N.NO)({pageName:"nameTenant",valid:e}))}),[u,r,s,t]),(0,T.jsx)(i.Fragment,{children:(0,T.jsxs)(c.ZP,{container:!0,children:[(0,T.jsx)(c.ZP,{item:!0,sx:{width:"calc(100% - 300px)"},children:(0,T.jsx)(g.Z,{className:n.paperWrapper,sx:{minHeight:550},children:(0,T.jsxs)(c.ZP,{container:!0,children:[(0,T.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,T.jsxs)("div",{className:n.headerElement,children:[(0,T.jsx)("h3",{className:n.h3Section,children:"Name"}),(0,T.jsx)("span",{className:n.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,T.jsx)("div",{className:n.formFieldRow,children:(0,T.jsx)(Ke,{})})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(Ge,{formToRender:t})}),t===Ne.cy.default?(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){m("selectedStorageClass",e.target.value)},label:"Storage Class",value:a,options:u,disabled:u.length<1})}):(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){r((0,N.Qy)({storageType:e.target.value,features:d}))},label:o()(Ne.Hd,"".concat(t,".variantSelectorLabel"),"Storage Type"),value:s,options:o()(Ne.Hd,"".concat(t,".variantSelectorValues"),[])})}),t===Ne.cy.default?(0,T.jsx)(_e.Z,{}):o()(Ne.Hd,"".concat(t,".sizingComponent"),null)]})})}),(0,T.jsx)(c.ZP,{item:!0,children:(0,T.jsx)("div",{className:n.sizePreview,children:(0,T.jsx)(Se,{})})})]})})})),Le=function(){var e=(0,l.v9)(Ae.$4),n=(0,i.useState)(null),t=(0,r.Z)(n,2),a=t[0],s=t[1];return(0,i.useEffect)((function(){var n=Ne.cy.default;e&&0!==e.length&&Object.keys(Ne.I8).forEach((function(t){e.includes(t)&&(n=o()(Ne.I8,t,Ne.cy.default))}));s(n)}),[e]),null===a?null:(0,T.jsx)(Ee,{formToRender:a})},ze=t(56578),Oe=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchEnabledFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.storageClasses})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchEnabled})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchVolumeSize})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSelectedStorageClass})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchImage})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresImage})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresInitImage})),v=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchSecurityContext})),_=(0,l.v9)((function(e){return e.createTenant.fields.configure.logSearchPostgresSecurityContext})),P=(0,i.useState)({}),I=(0,r.Z)(P,2),w=I[0],k=I[1],R=[{label:"Default",value:"default"}].concat((0,x.Z)(s)),F=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:d,customValidation:""===d,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:u,customValidation:""===u||parseInt(u)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:S.runAsUser,customValidation:""===S.runAsUser||parseInt(S.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===S.runAsGroup||parseInt(S.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:S.fsGroup,customValidation:""===S.fsGroup||parseInt(S.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:_.runAsUser,customValidation:""===_.runAsUser||parseInt(_.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===_.runAsGroup||parseInt(_.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:_.fsGroup,customValidation:""===_.fsGroup||parseInt(_.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),k(n)}),[m,f,p,t,o,d,u,y,S,_]),(0,i.useEffect)((function(){s.length>0&&(0===s.filter((function(e){return e.value===d})).length&&F("logSearchSelectedStorageClass","default"))}),[d,v,s,F]);var D=function(e){k((0,j.he)(w,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Audit Log"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,children:(0,T.jsx)(C.Z,{value:"enableLogging",id:"enableLogging",name:"enableLogging",checked:o,onChange:function(e){var n=e.target.checked;F("logSearchEnabled",n)},indicatorLabels:["Enabled","Disabled"]})})]}),(0,T.jsxs)(c.ZP,{container:!0,spacing:1,children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"Deploys a small PostgreSQL database and stores access logs of all calls into the tenant."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){F("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:d,options:R,disabled:R.length<1})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(b.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){F("logSearchVolumeSize",e.target.value),D("log_search_volume_size")},label:"Storage Size",overlayObject:(0,T.jsx)(ze.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:u,required:!0,error:w.log_search_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(n.fieldGroup," ").concat(n.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for LogSearch"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsUser:e.target.value})),D("logSearch_securityContext_runAsUser")},label:"Run As User",value:S.runAsUser,required:!0,error:w.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsGroup:e.target.value})),D("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:S.runAsGroup,required:!0,error:w.logSearch_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroup:e.target.value})),D("logSearch_securityContext_fsGroup")},label:"FsGroup",value:S.fsGroup,required:!0,error:w.logSearch_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:S.fsGroupChangePolicy,onChange:function(e){F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:S.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("logSearchSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]}),(0,T.jsxs)("fieldset",{className:n.fieldGroup,children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsUser:e.target.value})),D("postgres_securityContext_runAsUser")},label:"Run As User",value:_.runAsUser,required:!0,error:w.postgres_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsGroup:e.target.value})),D("postgres_securityContext_runAsGroup")},label:"Run As Group",value:_.runAsGroup,required:!0,error:w.postgres_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{fsGroup:e.target.value})),D("postgres_securityContext_fsGroup")},label:"FsGroup",value:_.fsGroup,required:!0,error:w.postgres_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:_.fsGroupChangePolicy,onChange:function(e){F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(C.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:_.runAsNonRoot,onChange:function(e){var n=e.target.checked;F("logSearchPostgresSecurityContext",(0,a.Z)((0,a.Z)({},_),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})]})]})})),Me=(0,p.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},fieldGroup:(0,a.Z)((0,a.Z)({},m.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},fieldSpaceTop:{marginTop:15},prometheusEnabledFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},m.oO),m.AK))}))((function(e){var n=e.classes,t=(0,h.TL)(),s=(0,l.v9)((function(e){return e.createTenant.storageClasses})),o=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusEnabled})),u=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusVolumeSize})),d=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSelectedStorageClass})),m=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusImage})),f=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSidecarImage})),p=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusInitImage})),v=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),y=(0,l.v9)((function(e){return e.createTenant.fields.configure.tenantSecurityContext})),S=(0,l.v9)((function(e){return e.createTenant.fields.configure.prometheusSecurityContext})),_=(0,i.useState)({}),P=(0,r.Z)(_,2),I=P[0],w=P[1],k=[{label:"Default",value:"default"}].concat((0,x.Z)(s)),R=(0,i.useCallback)((function(e,n){t((0,N.HM)({pageName:"configure",field:e,value:n}))}),[t]);(0,i.useEffect)((function(){var e=[];o&&(e=[].concat((0,x.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:d,customValidation:""===d,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:u,customValidation:""===u||parseInt(u)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:S.runAsUser,customValidation:""===S.runAsUser||parseInt(S.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:S.runAsGroup,customValidation:""===S.runAsGroup||parseInt(S.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:S.fsGroup,customValidation:""===S.fsGroup||parseInt(S.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]));var n=(0,Z.R)(e);t((0,N.NO)({pageName:"configure",valid:0===Object.keys(n).length})),w(n)}),[m,f,p,t,o,d,u,y,S]),(0,i.useEffect)((function(){s.length>0&&(0===s.filter((function(e){return e.value===d})).length&&R("prometheusSelectedStorageClass","default"))}),[d,v,s,R]);var F=function(e){w((0,j.he)(I,e))};return(0,T.jsxs)(g.Z,{className:n.paperWrapper,children:[(0,T.jsxs)(c.ZP,{container:!0,alignItems:"center",children:[(0,T.jsx)(c.ZP,{item:!0,xs:!0,children:(0,T.jsx)(W,{children:"Monitoring"})}),(0,T.jsx)(c.ZP,{item:!0,xs:4,children:(0,T.jsx)(C.Z,{indicatorLabels:["Enabled","Disabled"],checked:o,value:"monitoring_status",id:"monitoring-status",name:"monitoring-status",onChange:function(e){var n=e.target.checked;R("prometheusEnabled",n)},description:""})})]}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("span",{className:n.descriptionText,children:"A small Prometheus will be deployed to keep metrics about the tenant."})}),(0,T.jsx)(c.ZP,{xs:12,children:(0,T.jsx)("hr",{className:n.hrClass})}),(0,T.jsx)(c.ZP,{container:!0,spacing:1,children:o&&(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){R("prometheusSelectedStorageClass",e.target.value)},label:"Storage Class",value:d,options:k,disabled:k.length<1})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:n.multiContainer,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){R("prometheusVolumeSize",e.target.value),F("prometheus_volume_size")},label:"Storage Size",overlayObject:(0,T.jsx)(ze.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:u,required:!0,error:I.prometheus_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(n.fieldGroup," ").concat(n.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:n.descriptionText,children:"SecurityContext"}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsUser:e.target.value})),F("prometheus_securityContext_runAsUser")},label:"Run As User",value:S.runAsUser,required:!0,error:I.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsGroup:e.target.value})),F("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:S.runAsGroup,required:!0,error:I.prometheus_securityContext_runAsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(n.multiContainer," ").concat(n.responsiveSectionItem),children:[(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(b.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroup:e.target.value})),F("prometheus_securityContext_fsGroup")},label:"FsGroup",value:S.fsGroup,required:!0,error:I.prometheus_securityContext_fsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:n.configSectionItem,children:(0,T.jsx)(A.Z,{label:"FsGroupChangePolicy",id:"securityContext_fsGroupChangePolicy",name:"securityContext_fsGroupChangePolicy",value:S.fsGroupChangePolicy,onChange:function(e){R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{fsGroupChangePolicy:e.target.value}))},options:[{label:"Always",value:"Always"},{label:"OnRootMismatch",value:"OnRootMismatch"}]})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:n.configSectionItem,children:(0,T.jsx)("div",{className:"".concat(n.multiContainer," ").concat(n.fieldSpaceTop),children:(0,T.jsx)(C.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:S.runAsNonRoot,onChange:function(e){var n=e.target.checked;R("prometheusSecurityContext",(0,a.Z)((0,a.Z)({},S),{},{runAsNonRoot:n}))},label:"Do not run as Root"})})})]})]})})]})})),Ve=t(23804),Ue=t(75952),qe=["nameTenant","tenantSize","configure","affinity","identityProvider","security","encryption"],Be=t(84218),He=function(){var e=(0,h.TL)(),n=(0,l.v9)((function(e){return e.createTenant.addingTenant})),t=(0,l.v9)((function(e){return e.createTenant.validPages})),r=(0,l.v9)((function(e){return e.createTenant.fields.nameTenant.selectedStorageClass})),a=!n&&""!==r&&qe.every((function(e){return t.includes(e)}));return(0,T.jsx)(Ue.zx,{id:"wizard-button-Create",variant:"callAction",color:"primary",onClick:function(){e((0,Be.e)())},disabled:!a,label:"Create"},"button-AddTenant-Create")},We=t(37798),Qe=t(57689),$e=function(){var e=(0,h.TL)(),n=(0,Qe.s0)(),t=(0,l.v9)((function(e){return e.createTenant.showNewCredentials})),r=(0,l.v9)((function(e){return e.createTenant.createdAccount}));return(0,T.jsx)(i.Fragment,{children:t&&(0,T.jsx)(We.default,{newServiceAccount:r,open:t,closeModal:function(){e((0,N.dS)()),n("/tenants")},entity:"Tenant"})})},Ye=(0,R.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({pageBox:{border:"1px solid #EAEAEA"}},m.oO),m.AK),m.Je))})),Je=function(){var e=(0,h.TL)(),n=(0,Qe.s0)(),t=Ye(),a=(0,l.v9)(Ae.$4),s=(0,l.v9)((function(e){return e.createTenant.addingTenant})),d=(0,i.useState)(null),m=(0,r.Z)(d,2),x=m[0],p=m[1];(0,i.useEffect)((function(){var e=Ne.cy.default;a&&0!==a.length&&Object.keys(Ne.I8).forEach((function(n){a.includes(n)&&(e=o()(Ne.I8,n,Ne.cy.default))}));p(e)}),[a]);var g={label:"Cancel",type:"other",enabled:!0,action:function(){e((0,N.dS)()),n("/tenants")}},v={componentRender:(0,T.jsx)(He,{},"create-tenant")},y=[{label:"Setup",componentRender:(0,T.jsx)(Le,{}),buttons:[g,v]},{label:"Configure",advancedOnly:!0,componentRender:(0,T.jsx)(P,{}),buttons:[g,v]},{label:"Images",advancedOnly:!0,componentRender:(0,T.jsx)(pe,{}),buttons:[g,v]},{label:"Pod Placement",advancedOnly:!0,componentRender:(0,T.jsx)(he,{}),buttons:[g,v]},{label:"Identity Provider",advancedOnly:!0,componentRender:(0,T.jsx)(U,{}),buttons:[g,v]},{label:"Security",advancedOnly:!0,componentRender:(0,T.jsx)(H,{}),buttons:[g,v]},{label:"Encryption",advancedOnly:!0,componentRender:(0,T.jsx)(le,{}),buttons:[g,v]},{label:"Audit Log",advancedOnly:!0,componentRender:(0,T.jsx)(Oe,{}),buttons:[g,v]},{label:"Monitoring",advancedOnly:!0,componentRender:(0,T.jsx)(Me,{}),buttons:[g,v]}];return(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)($e,{}),(0,T.jsx)(xe.Z,{label:(0,T.jsx)(ve.Z,{to:"/tenants",label:"Tenants",executeOnClick:function(){e((0,N.dS)())}})}),(0,T.jsxs)(ge.Z,{children:[s&&(0,T.jsx)(c.ZP,{item:!0,xs:12,children:(0,T.jsx)(u.Z,{})}),(0,T.jsx)(c.ZP,{item:!0,xs:12,className:t.pageBox,children:(0,T.jsx)(f.Z,{wizardSteps:y})}),x===Ne.cy.aws&&(0,T.jsx)(c.ZP,{item:!0,xs:12,style:{marginTop:16},children:(0,T.jsx)(Ve.Z,{title:"EBS Volume Configuration.",iconComponent:(0,T.jsx)(Ie.idV,{}),help:(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)("b",{children:"Performance Optimized"}),": Uses the ",(0,T.jsx)("i",{children:"gp3"})," EBS storage class class configured at 1,000Mi/s throughput and 16,000 IOPS, however the minimum volume size for this type of EBS volume is ",(0,T.jsx)("b",{children:"32Gi"}),".",(0,T.jsx)("br",{}),(0,T.jsx)("br",{}),(0,T.jsx)("b",{children:"Storage Optimized"}),": Uses the ",(0,T.jsx)("i",{children:"sc1"})," EBS storage class, however the minimum volume size for this type of EBS volume is \xa0",(0,T.jsx)("b",{children:"16Ti"})," to unlock their maximum throughput speed of 250Mi/s."]})})})]})]})}},88070:function(e,n,t){t(72791);var r=t(78687),a=t(64554),i=t(46707),s=t(57689),o=t(80184),l=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(a.Z,{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(){var e=(0,s.UO)(),n=e.tenantName||"",t=e.tenantNamespace||"",c=(0,r.v9)((function(e){return""!==t?t:""!==e.createTenant.fields.nameTenant.namespace?e.createTenant.fields.nameTenant.namespace:""})),u=(0,r.v9)((function(e){return""!==n?n:""!==e.createTenant.fields.nameTenant.tenantName?e.createTenant.fields.nameTenant.tenantName:""}));return(0,o.jsx)(a.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:(0,o.jsxs)(a.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,o.jsx)(l,{icon:(0,o.jsx)(i.Z,{}),description:"TLS Certificates Warning"}),(0,o.jsxs)(a.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Automatic certificate generation is not enabled.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"If you wish to continue only with ",(0,o.jsx)("b",{children:"custom certificates"})," make sure they are valid for the following internode hostnames, i.e.:",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:["minio.",c,(0,o.jsx)("br",{}),"minio.",c,".svc",(0,o.jsx)("br",{}),"minio.",c,".svc.",(0,o.jsx)("br",{}),"*.",u,"-hl.",c,".svc.",(0,o.jsx)("br",{}),"*.",c,".svc."]}),(0,o.jsx)("br",{}),"Replace ",(0,o.jsx)("em",{children:""}),","," ",(0,o.jsx)("em",{children:""})," and",(0,o.jsx)("em",{children:""})," with the actual values for your MinIO tenant.",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"You can learn more at our"," ",(0,o.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/operations/network-encryption.html?ref=op#id5",target:"_blank",rel:"noreferrer",children:"documentation"}),"."]})]})})}},68456:function(e,n,t){t.d(n,{QT:function(){return l},YH:function(){return c},mo:function(){return o}});var r=t(61889),a=t(98021),i=t(56096),s=t(80184),o=function(){return(0,s.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(r.ZP,{children:(0,s.jsx)(i.gyG,{width:"16px",height:"16px"})}),(0,s.jsx)(r.ZP,{item:!0,children:"Open ID"})]})},l=function(){return(0,s.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(r.ZP,{children:(0,s.jsx)(a.Z,{width:"16px",height:"16px"})}),(0,s.jsx)(r.ZP,{item:!0,children:"LDAP / Active Directory"})]})},c=function(){return(0,s.jsxs)(r.ZP,{container:!0,columnGap:1,children:[(0,s.jsx)(r.ZP,{children:(0,s.jsx)(i.oyc,{width:"16px",height:"16px"})}),(0,s.jsx)(r.ZP,{item:!0,children:"Built-in"})]})}},22512:function(e,n,t){var r=t(72791),a=t(20890),i=t(11135),s=t(25787),o=t(80184);n.Z=(0,s.Z)((function(e){var n;return(0,i.Z)({errorBlock:{color:(null===(n=e.palette)||void 0===n?void 0:n.error.main)||"#C83B51"}})}))((function(e){var n=e.classes,t=e.errorMessage,i=e.withBreak,s=void 0===i||i;return(0,o.jsxs)(r.Fragment,{children:[s&&(0,o.jsx)("br",{}),(0,o.jsx)(a.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})}))},42419:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=s},99663:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");n.Z=s},86711:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");n.Z=s},22918:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z"}),"Casino");n.Z=s},27247:function(e,n,t){var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),s=(0,a.default)((0,i.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");n.Z=s},94721:function(e,n,t){var r=t(63366),a=t(87462),i=t(72791),s=t(28182),o=t(94419),l=t(12065),c=t(66934),u=t(31402),d=t(90133),m=t(80184),f=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],h=(0,c.ZP)("div",{name:"MuiDivider",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.absolute&&n.absolute,n[t.variant],t.light&&n.light,"vertical"===t.orientation&&n.vertical,t.flexItem&&n.flexItem,t.children&&n.withChildren,t.children&&"vertical"===t.orientation&&n.withChildrenVertical,"right"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignRight,"left"===t.textAlign&&"vertical"!==t.orientation&&n.textAlignLeft]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(n.vars||n).palette.divider,borderBottomWidth:"thin"},t.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},t.light&&{borderColor:n.vars?"rgba(".concat(n.vars.palette.dividerChannel," / 0.08)"):(0,l.Fq)(n.palette.divider,.08)},"inset"===t.variant&&{marginLeft:72},"middle"===t.variant&&"horizontal"===t.orientation&&{marginLeft:n.spacing(2),marginRight:n.spacing(2)},"middle"===t.variant&&"vertical"===t.orientation&&{marginTop:n.spacing(1),marginBottom:n.spacing(1)},"vertical"===t.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},t.flexItem&&{alignSelf:"stretch",height:"auto"})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{position:"relative",width:"100%",borderTop:"thin solid ".concat((n.vars||n).palette.divider),top:"50%",content:'""',transform:"translateY(50%)"}})}),(function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({},t.children&&"vertical"===t.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",top:"0%",left:"50%",borderTop:0,borderLeft:"thin solid ".concat((n.vars||n).palette.divider),transform:"translateX(0%)"}})}),(function(e){var n=e.ownerState;return(0,a.Z)({},"right"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===n.textAlign&&"vertical"!==n.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})})),x=(0,c.ZP)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:function(e,n){var t=e.ownerState;return[n.wrapper,"vertical"===t.orientation&&n.wrapperVertical]}})((function(e){var n=e.theme,t=e.ownerState;return(0,a.Z)({display:"inline-block",paddingLeft:"calc(".concat(n.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(n.spacing(1)," * 1.2)")},"vertical"===t.orientation&&{paddingTop:"calc(".concat(n.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(n.spacing(1)," * 1.2)")})})),p=i.forwardRef((function(e,n){var t=(0,u.Z)({props:e,name:"MuiDivider"}),i=t.absolute,l=void 0!==i&&i,c=t.children,p=t.className,g=t.component,v=void 0===g?c?"div":"hr":g,y=t.flexItem,j=void 0!==y&&y,Z=t.light,C=void 0!==Z&&Z,b=t.orientation,S=void 0===b?"horizontal":b,_=t.role,N=void 0===_?"hr"!==v?"separator":void 0:_,A=t.textAlign,T=void 0===A?"center":A,P=t.variant,I=void 0===P?"fullWidth":P,w=(0,r.Z)(t,f),k=(0,a.Z)({},t,{absolute:l,component:v,flexItem:j,light:C,orientation:S,role:N,textAlign:T,variant:I}),R=function(e){var n=e.absolute,t=e.children,r=e.classes,a=e.flexItem,i=e.light,s=e.orientation,l=e.textAlign,c={root:["root",n&&"absolute",e.variant,i&&"light","vertical"===s&&"vertical",a&&"flexItem",t&&"withChildren",t&&"vertical"===s&&"withChildrenVertical","right"===l&&"vertical"!==s&&"textAlignRight","left"===l&&"vertical"!==s&&"textAlignLeft"],wrapper:["wrapper","vertical"===s&&"wrapperVertical"]};return(0,o.Z)(c,d.V,r)}(k);return(0,m.jsx)(h,(0,a.Z)({as:v,className:(0,s.Z)(R.root,p),role:N,ref:n,ownerState:k},w,{children:c?(0,m.jsx)(x,{className:R.wrapper,ownerState:k,children:c}):null}))}));n.Z=p}}]);
-//# sourceMappingURL=1275.3857a963.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1275.3857a963.chunk.js.map b/portal-ui/build/static/js/1275.3857a963.chunk.js.map
deleted file mode 100644
index 9353ee906..000000000
--- a/portal-ui/build/static/js/1275.3857a963.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1275.3857a963.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","icons/CertificateIcon.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Tenants/AddTenant/Steps/Configure.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPActiveDirectory.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPOpenID.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider/IDPBuiltIn.tsx","screens/Console/Tenants/AddTenant/Steps/IdentityProvider.tsx","screens/Console/Tenants/AddTenant/Steps/Security.tsx","screens/Console/Common/SectionH1.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/VaultKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AzureKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GCPKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/GemaltoKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption/AWSKMSAdd.tsx","screens/Console/Tenants/AddTenant/Steps/Encryption.tsx","screens/Console/Tenants/AddTenant/Steps/Affinity.tsx","screens/Console/Tenants/AddTenant/Steps/Images.tsx","screens/Console/Tenants/AddTenant/Steps/SizePreview.tsx","screens/Console/Tenants/AddTenant/Steps/helpers/AddNamespaceModal.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NamespaceSelector.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/NameTenantMain.tsx","screens/Console/Tenants/AddTenant/Steps/TenantResources/TenantResources.tsx","screens/Console/Tenants/AddTenant/Steps/ConfigLogSearch.tsx","screens/Console/Tenants/AddTenant/Steps/ConfigPrometheus.tsx","screens/Console/Tenants/AddTenant/common.ts","screens/Console/Tenants/AddTenant/CreateTenantButton.tsx","screens/Console/Tenants/AddTenant/NewTenantCredentials.tsx","screens/Console/Tenants/AddTenant/AddTenant.tsx","screens/Console/Tenants/HelpBox/TLSHelpBox.tsx","screens/Console/Tenants/LogoComponents.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/Casino.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/@mui/material/Divider/Divider.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nconst CertificateIcon = (props: SVGProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\nexport default CertificateIcon;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n \n
{label}:
\n
\n \n \n \n {}}\n onMouseDown={() => {}}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={ }\n />\n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n })\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n })\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={\n \n
New {entity} Created
\n
\n }\n titleIcon={ }\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n \n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n >\n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n >\n )}\n \n \n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n >\n )}\n {idp ? (\n \n Please Login via the configured external identity provider.\n
\n ) : (\n \n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n {!idp && (\n <>\n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n >\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"../../../../../icons\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n \n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n \n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n \n
{value}
\n
{\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n Divider,\n Grid,\n IconButton,\n Paper,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n formFieldStyles,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\nimport {\n addNewMinIODomain,\n isPageValid,\n removeMinIODomain,\n setEnvVars,\n updateAddField,\n} from \"../createTenantSlice\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n marginBottom: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n wrapperContainer: {\n display: \"flex\",\n marginBottom: 15,\n },\n envVarRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...modalBasic,\n ...wizardCommon,\n ...formFieldStyles,\n });\n\nconst Configure = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const exposeMinIO = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeMinIO\n );\n const exposeConsole = useSelector(\n (state: AppState) => state.createTenant.fields.configure.exposeConsole\n );\n const setDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.setDomains\n );\n const consoleDomain = useSelector(\n (state: AppState) => state.createTenant.fields.configure.consoleDomain\n );\n const minioDomains = useSelector(\n (state: AppState) => state.createTenant.fields.configure.minioDomains\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom\n );\n const tenantEnvVars = useSelector(\n (state: AppState) => state.createTenant.fields.configure.envVars\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (setDomains) {\n const minioExtraValidations = minioDomains.map((validation, index) => {\n return {\n fieldKey: `minio-domain-${index.toString()}`,\n required: false,\n value: validation,\n pattern: /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?$/,\n customPatternMessage:\n \"MinIO domain is not in the form of http|https://subdomain.domain\",\n };\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n ...minioExtraValidations,\n {\n fieldKey: \"console_domain\",\n required: false,\n value: consoleDomain,\n pattern:\n /^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-./]*)?$/,\n customPatternMessage:\n \"Console domain is not in the form of http|https://subdomain.domain:port/subpath1/subpath2\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n dispatch,\n tenantCustom,\n tenantSecurityContext,\n setDomains,\n consoleDomain,\n minioDomains,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n const updateMinIODomain = (value: string, index: number) => {\n const copyDomains = [...minioDomains];\n copyDomains[index] = value;\n\n updateField(\"minioDomains\", copyDomains);\n };\n\n return (\n \n \n
Configure \n \n Basic configurations for tenant management\n \n \n \n
Services \n \n Whether the tenant's services should request an external IP via\n LoadBalancer service type.\n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeMinIO\", checked);\n }}\n label={\"Expose MinIO Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeConsole\", checked);\n }}\n label={\"Expose Console Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"setDomains\", checked);\n }}\n label={\"Set Custom Domains\"}\n />\n \n {setDomains && (\n \n \n \n Custom Domains for MinIO\n \n \n \n ) => {\n updateField(\"consoleDomain\", e.target.value);\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Console Domain\"\n value={consoleDomain}\n placeholder={\n \"Eg. http://subdomain.domain:port/subpath1/subpath2\"\n }\n error={validationErrors[\"console_domain\"] || \"\"}\n />\n
\n \n
MinIO Domains \n
\n {minioDomains.map((domain, index) => {\n return (\n
\n
\n ) => {\n updateMinIODomain(e.target.value, index);\n }}\n label={`MinIO Domain ${index + 1}`}\n value={domain}\n placeholder={\"Eg. http://subdomain.domain\"}\n error={\n validationErrors[\n `minio-domain-${index.toString()}`\n ] || \"\"\n }\n />\n \n
dispatch(addNewMinIODomain())}\n disabled={index !== minioDomains.length - 1}\n >\n \n \n
\n\n \n dispatch(removeMinIODomain(index))}\n disabled={minioDomains.length <= 1}\n >\n \n \n
\n \n );\n })}\n
\n
\n \n \n \n )}\n\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"tenantCustom\", checked);\n }}\n label={\"Security Context\"}\n />\n \n {tenantCustom && (\n \n \n \n SecurityContext for MinIO\n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={tenantSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={tenantSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={tenantSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n\n \n
Additional Environment Variables \n \n Define additional environment variables to be used by your MinIO pods\n \n \n \n {tenantEnvVars.map((envVar, index) => (\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: e.target.value, value: keyPair.value }\n : keyPair\n )\n )\n );\n }}\n index={index}\n key={`env_var_key_${index.toString()}`}\n />\n \n \n ) => {\n const existingEnvVars = [...tenantEnvVars];\n dispatch(\n setEnvVars(\n existingEnvVars.map((keyPair, i) =>\n i === index\n ? { key: keyPair.key, value: e.target.value }\n : keyPair\n )\n )\n );\n }}\n index={index}\n key={`env_var_value_${index.toString()}`}\n />\n \n \n \n
{\n const existingEnvVars = [...tenantEnvVars];\n existingEnvVars.push({ key: \"\", value: \"\" });\n\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={index !== tenantEnvVars.length - 1}\n >\n \n \n
\n \n {\n const existingEnvVars = tenantEnvVars.filter(\n (item, fIndex) => fIndex !== index\n );\n dispatch(setEnvVars(existingEnvVars));\n }}\n disabled={tenantEnvVars.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(Configure);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n addIDPADUsrAtIndex,\n isPageValid,\n removeIDPADUsrAtIndex,\n setIDPADUsrAtIndex,\n updateAddField,\n addIDPADGroupAtIndex,\n removeIDPADGroupAtIndex,\n setIDPADGroupAtIndex,\n} from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { clearValidationError } from \"../../../utils\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n adUserDnRows: {\n display: \"flex\",\n marginBottom: 10,\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPActiveDirectory = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const ADURL = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADURL\n );\n const ADSkipTLS = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADSkipTLS\n );\n const ADServerInsecure = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerInsecure\n );\n const ADGroupSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchBaseDN\n );\n const ADGroupSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADGroupSearchFilter\n );\n const ADUserDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADUserDNs\n );\n const ADGroupDNs = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.ADGroupDNs\n );\n const ADLookupBindDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindDN\n );\n const ADLookupBindPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADLookupBindPassword\n );\n const ADUserDNSearchBaseDN = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchBaseDN\n );\n const ADUserDNSearchFilter = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADUserDNSearchFilter\n );\n const ADServerStartTLS = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.ADServerStartTLS\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"AD\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n {\n fieldKey: \"ad_lookupBindDN\",\n required: true,\n value: ADLookupBindDN,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n ADLookupBindDN,\n idpSelection,\n ADURL,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADUserDNs,\n ADGroupDNs,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"ADURL\", e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADSkipTLS\", checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerInsecure\", checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be unencrypted\n \n \n \n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerStartTLS\", checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n updateField(\"ADLookupBindDN\", e.target.value);\n cleanValidation(\"ad_lookupBindDN\");\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n error={validationErrors[\"ad_lookupBindDN\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"ADLookupBindPassword\", e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchBaseDN\", e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchFilter\", e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(sAMAcountName=%s)\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchBaseDN\", e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchFilter\", e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n \n \n List of user DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADUserDNs.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPADUsrAtIndex({\n index: index,\n userDN: e.target.value,\n })\n );\n cleanValidation(`ad-userdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={\n validationErrors[`ad-userdn-${index.toString()}`] || \"\"\n }\n />\n \n
\n {\n dispatch(addIDPADUsrAtIndex());\n }}\n >\n \n \n \n
\n {\n if (ADUserDNs.length > 1) {\n dispatch(removeIDPADUsrAtIndex(index));\n }\n }}\n >\n \n \n \n
\n \n \n );\n })}\n \n \n \n \n List of group DNs (Distinguished Names) to be Tenant Administrators\n \n \n {ADGroupDNs.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPADGroupAtIndex({\n index: index,\n userDN: e.target.value,\n })\n );\n cleanValidation(`ad-groupdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-groupdn-${index.toString()}`}\n error={\n validationErrors[`ad-groupdn-${index.toString()}`] || \"\"\n }\n />\n \n
\n {\n dispatch(addIDPADGroupAtIndex());\n }}\n >\n \n \n \n
\n {\n if (ADGroupDNs.length > 1) {\n dispatch(removeIDPADGroupAtIndex(index));\n }\n }}\n >\n \n \n \n
\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default IDPActiveDirectory;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPOpenID = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const openIDConfigurationURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDConfigurationURL\n );\n const openIDClientID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClientID\n );\n const openIDSecretID = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDSecretID\n );\n const openIDCallbackURL = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDCallbackURL\n );\n const openIDClaimName = useSelector(\n (state: AppState) =>\n state.createTenant.fields.identityProvider.openIDClaimName\n );\n const openIDScopes = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.openIDScopes\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"identityProvider\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"OpenID\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: true,\n value: openIDClaimName,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n openIDClientID,\n openIDSecretID,\n openIDConfigurationURL,\n openIDClaimName,\n dispatch,\n ]);\n\n return (\n \n \n ) => {\n updateField(\"openIDConfigurationURL\", e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClientID\", e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDSecretID\", e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDCallbackURL\", e.target.value);\n cleanValidation(\"openID_callbackURL\");\n }}\n label=\"Callback URL\"\n value={openIDCallbackURL}\n placeholder=\"https://your-console-endpoint:9443/oauth_callback\"\n error={validationErrors[\"openID_callbackURL\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"openIDClaimName\", e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n error={validationErrors[\"openID_claimName\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDScopes\", e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n );\n};\n\nexport default IDPOpenID;\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 InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport {\n addIDPNewKeyPair,\n isPageValid,\n removeIDPKeyPairAtIndex,\n setIDPPwdAtIndex,\n setIDPUsrAtIndex,\n} from \"../../createTenantSlice\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"../../../../../../icons/RemoveIcon\";\nimport { clearValidationError, getRandomString } from \"../../../utils\";\nimport CasinoIcon from \"@mui/icons-material/Casino\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n shortened: {\n gridTemplateColumns: \"auto auto 50px 50px\",\n display: \"grid\",\n gridGap: 15,\n marginBottom: 10,\n \"& input\": {\n fontWeight: 400,\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IDPBuiltIn = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n const accessKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.accessKeys\n );\n const secretKeys = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.secretKeys\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"Built-in\") {\n customIDPValidation = [...customIDPValidation];\n for (var i = 0; i < accessKeys.length; i++) {\n customIDPValidation.push({\n fieldKey: `accesskey-${i.toString()}`,\n required: true,\n value: accessKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n customIDPValidation.push({\n fieldKey: `secretkey-${i.toString()}`,\n required: true,\n value: secretKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n }\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n dispatch(\n isPageValid({\n pageName: \"identityProvider\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [idpSelection, accessKeys, secretKeys, dispatch]);\n\n return (\n \n Add additional users\n {accessKeys.map((_, index) => {\n return (\n \n \n
) => {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: e.target.value,\n })\n );\n cleanValidation(`accesskey-${index.toString()}`);\n }}\n index={index}\n key={`csv-accesskey-${index.toString()}`}\n error={validationErrors[`accesskey-${index.toString()}`] || \"\"}\n />\n ) => {\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: e.target.value,\n })\n );\n cleanValidation(`secretkey-${index.toString()}`);\n }}\n index={index}\n key={`csv-secretkey-${index.toString()}`}\n error={validationErrors[`secretkey-${index.toString()}`] || \"\"}\n />\n \n
\n
{\n dispatch(addIDPNewKeyPair());\n }}\n disabled={index !== accessKeys.length - 1}\n >\n \n \n
\n
\n {\n dispatch(removeIDPKeyPairAtIndex(index));\n }}\n disabled={accessKeys.length <= 1}\n >\n \n \n
\n
\n \n {\n dispatch(\n setIDPUsrAtIndex({\n index,\n accessKey: getRandomString(16),\n })\n );\n dispatch(\n setIDPPwdAtIndex({\n index,\n secretKey: getRandomString(16),\n })\n );\n }}\n size={\"small\"}\n >\n \n \n
\n \n
\n \n \n );\n })}\n \n );\n};\n\nexport default IDPBuiltIn;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport { setIDP } from \"../createTenantSlice\";\nimport IDPActiveDirectory from \"./IdentityProvider/IDPActiveDirectory\";\nimport IDPOpenID from \"./IdentityProvider/IDPOpenID\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport IDPBuiltIn from \"./IdentityProvider/IDPBuiltIn\";\nimport {\n OIDCLogoElement,\n LDAPLogoElement,\n BuiltInLogoElement,\n} from \"../../LogoComponents\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n protocolRadioOptions: {\n display: \"flex\",\n flexFlow: \"column\",\n marginBottom: 10,\n\n \"& label\": {\n fontSize: 16,\n fontWeight: 600,\n },\n \"& div\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"top\",\n },\n },\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst IdentityProvider = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const idpSelection = useSelector(\n (state: AppState) => state.createTenant.fields.identityProvider.idpSelection\n );\n\n return (\n \n \n
Identity Provider \n \n Access to the tenant can be controlled via an external Identity\n Manager.\n \n \n \n {\n dispatch(setIDP(e.target.value));\n }}\n selectorOptions={[\n { label: , value: \"Built-in\" },\n { label: , value: \"OpenID\" },\n { label: , value: \"AD\" },\n ]}\n />\n \n {idpSelection === \"Built-in\" && }\n {idpSelection === \"OpenID\" && }\n {idpSelection === \"AD\" && }\n \n );\n};\n\nexport default IdentityProvider;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\nimport {\n addCaCertificate,\n deleteCaCertificate,\n addFileToCaCertificates,\n addFileToKeyPair,\n addKeyPair,\n deleteKeyPair,\n addClientKeyPair,\n deleteClientKeyPair,\n addFileToClientKeyPair,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport TLSHelpBox from \"../../HelpBox/TLSHelpBox\";\n\ninterface ISecurityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n minioCertsContainer: {\n marginBottom: 15,\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Security = ({ classes }: ISecurityProps) => {\n const dispatch = useAppDispatch();\n\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts\n );\n const minioCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioServerCertificates\n );\n const minioClientCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioClientCertificates\n );\n const caCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioCAsCertificates\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"security\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n\n useEffect(() => {\n if (!enableTLS) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableAutoCert) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n if (enableCustomCerts) {\n dispatch(isPageValid({ pageName: \"security\", valid: true }));\n return;\n }\n dispatch(isPageValid({ pageName: \"security\", valid: false }));\n }, [enableTLS, enableAutoCert, enableCustomCerts, dispatch]);\n\n return (\n \n \n
Security \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableTLS\", checked);\n }}\n label={\"TLS\"}\n description={\n \"Securing all the traffic using TLS. This is required for Encryption Configuration\"\n }\n />\n \n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableAutoCert\", checked);\n }}\n label={\"AutoCert\"}\n description={\n \"The internode certificates will be generated and managed by MinIO Operator\"\n }\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"enableCustomCerts\", checked);\n }}\n label={\"Custom Certificates\"}\n description={\"Certificates used to terminated TLS at MinIO\"}\n />\n \n {enableCustomCerts && (\n \n {!enableAutoCert && (\n \n \n \n )}\n \n MinIO Server Certificates \n {minioCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n \n
{\n dispatch(addKeyPair());\n }}\n disabled={index !== minioCertificates.length - 1}\n >\n \n \n
\n \n {\n dispatch(deleteKeyPair(keyPair.id));\n }}\n disabled={minioCertificates.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n MinIO Client Certificates \n {minioClientCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n dispatch(\n addFileToClientKeyPair({\n id: keyPair.id,\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n \n
{\n dispatch(addClientKeyPair());\n }}\n disabled={\n index !== minioClientCertificates.length - 1\n }\n >\n \n \n
\n \n {\n dispatch(deleteClientKeyPair(keyPair.id));\n }}\n disabled={minioClientCertificates.length <= 1}\n >\n \n \n
\n \n \n ))}\n \n \n MinIO CA Certificates \n {caCertificates.map((keyPair: KeyPair, index) => (\n \n \n {\n dispatch(\n addFileToCaCertificates({\n id: keyPair.id,\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n \n
\n
{\n dispatch(addCaCertificate());\n }}\n disabled={index !== caCertificates.length - 1}\n >\n \n \n
\n
\n {\n dispatch(deleteCaCertificate(keyPair.id));\n }}\n disabled={caCertificates.length <= 1}\n >\n \n \n
\n
\n \n \n ))}\n \n \n )}\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(Security);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ntype Props = {\n children: string;\n};\n\nconst SectionH1: React.FC = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default SectionH1;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst VaultKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const vaultEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEndpoint\n );\n const vaultEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultEngine\n );\n const vaultNamespace = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultNamespace\n );\n const vaultPrefix = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPrefix\n );\n const vaultAppRoleEngine = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultAppRoleEngine\n );\n const vaultId = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultId\n );\n const vaultSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultSecret\n );\n const vaultRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultRetry\n );\n const vaultPing = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.vaultPing\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultEndpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultId,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultSecret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultPing,\n customValidation: parseInt(vaultPing) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultRetry,\n customValidation: parseInt(vaultRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n vaultEndpoint,\n vaultEngine,\n vaultId,\n vaultSecret,\n vaultPing,\n vaultRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"vaultEndpoint\", e.target.value);\n cleanValidation(\"vault_endpoint\");\n }}\n label=\"Endpoint\"\n value={vaultEndpoint}\n error={validationErrors[\"vault_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultEngine\", e.target.value);\n cleanValidation(\"vault_engine\");\n }}\n label=\"Engine\"\n value={vaultEngine}\n />\n \n \n ) => {\n updateField(\"vaultNamespace\", e.target.value);\n }}\n label=\"Namespace\"\n value={vaultNamespace}\n />\n \n \n ) => {\n updateField(\"vaultPrefix\", e.target.value);\n }}\n label=\"Prefix\"\n value={vaultPrefix}\n />\n \n\n \n \n App Role \n \n ) => {\n updateField(\"vaultAppRoleEngine\", e.target.value);\n }}\n label=\"Engine\"\n value={vaultAppRoleEngine}\n />\n \n \n ) => {\n updateField(\"vaultId\", e.target.value);\n cleanValidation(\"vault_id\");\n }}\n label=\"AppRole ID\"\n value={vaultId}\n error={validationErrors[\"vault_id\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultSecret\", e.target.value);\n cleanValidation(\"vault_secret\");\n }}\n label=\"AppRole Secret\"\n value={vaultSecret}\n error={validationErrors[\"vault_secret\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultRetry\", e.target.value);\n cleanValidation(\"vault_retry\");\n }}\n label=\"Retry (Seconds)\"\n value={vaultRetry}\n error={validationErrors[\"vault_retry\"] || \"\"}\n />\n \n \n \n \n \n Status \n ) => {\n updateField(\"vaultPing\", e.target.value);\n cleanValidation(\"vault_ping\");\n }}\n label=\"Ping (Seconds)\"\n value={vaultPing}\n error={validationErrors[\"vault_ping\"] || \"\"}\n />\n \n \n \n );\n};\n\nexport default VaultKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst AzureKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const azureEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureEndpoint\n );\n const azureTenantID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureTenantID\n );\n const azureClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientID\n );\n const azureClientSecret = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.azureClientSecret\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureEndpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureTenantID,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureClientID,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureClientSecret,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"azureEndpoint\", e.target.value);\n cleanValidation(\"azure_endpoint\");\n }}\n label=\"Endpoint\"\n value={azureEndpoint}\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"azureTenantID\", e.target.value);\n cleanValidation(\"azure_tenant_id\");\n }}\n label=\"Tenant ID\"\n value={azureTenantID}\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientID\", e.target.value);\n cleanValidation(\"azure_client_id\");\n }}\n label=\"Client ID\"\n value={azureClientID}\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientSecret\", e.target.value);\n cleanValidation(\"azure_client_secret\");\n }}\n label=\"Client Secret\"\n value={azureClientSecret}\n error={validationErrors[\"azure_client_secret\"] || \"\"}\n />\n \n \n \n \n );\n};\n\nexport default AzureKMSAdd;\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 } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { updateAddField } from \"../../createTenantSlice\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst GCPKMSAdd = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey\n );\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n return (\n \n \n ) => {\n updateField(\"gcpProjectID\", e.target.value);\n }}\n label=\"Project ID\"\n value={gcpProjectID}\n />\n \n \n ) => {\n updateField(\"gcpEndpoint\", e.target.value);\n }}\n label=\"Endpoint\"\n value={gcpEndpoint}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"gcpClientEmail\", e.target.value);\n }}\n label=\"Client Email\"\n value={gcpClientEmail}\n />\n \n \n ) => {\n updateField(\"gcpClientID\", e.target.value);\n }}\n label=\"Client ID\"\n value={gcpClientID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKeyID\", e.target.value);\n }}\n label=\"Private Key ID\"\n value={gcpPrivateKeyID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKey\", e.target.value);\n }}\n label=\"Private Key\"\n value={gcpPrivateKey}\n />\n \n \n \n \n );\n};\n\nexport default GCPKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst GemaltoKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const gemaltoEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoEndpoint\n );\n const gemaltoToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoToken\n );\n const gemaltoDomain = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoDomain\n );\n const gemaltoRetry = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gemaltoRetry\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoEndpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoToken,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoDomain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoRetry,\n customValidation: parseInt(gemaltoRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"gemaltoEndpoint\", e.target.value);\n cleanValidation(\"gemalto_endpoint\");\n }}\n label=\"Endpoint\"\n value={gemaltoEndpoint}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"gemaltoToken\", e.target.value);\n cleanValidation(\"gemalto_token\");\n }}\n label=\"Token\"\n value={gemaltoToken}\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoDomain\", e.target.value);\n cleanValidation(\"gemalto_domain\");\n }}\n label=\"Domain\"\n value={gemaltoDomain}\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoRetry\", e.target.value);\n cleanValidation(\"gemalto_retry\");\n }}\n label=\"Retry (seconds)\"\n value={gemaltoRetry}\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n \n \n \n );\n};\n\nexport default GemaltoKMSAdd;\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 Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../../utils/validationFunctions\";\nimport { isPageValid, updateAddField } from \"../../createTenantSlice\";\nimport { clearValidationError } from \"../../../utils\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n })\n);\n\nconst AWSKMSAdd = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const awsEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsEndpoint\n );\n const awsRegion = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsRegion\n );\n const awsKMSKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsKMSKey\n );\n const awsAccessKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsAccessKey\n );\n const awsSecretKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsSecretKey\n );\n const awsToken = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.awsToken\n );\n const [validationErrors, setValidationErrors] = useState({});\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (!encryptionTab) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsEndpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsRegion,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsAccessKey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsSecretKey,\n },\n ];\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n encryptionTab,\n awsEndpoint,\n awsRegion,\n awsSecretKey,\n awsAccessKey,\n dispatch,\n ]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n ) => {\n updateField(\"awsEndpoint\", e.target.value);\n cleanValidation(\"aws_endpoint\");\n }}\n label=\"Endpoint\"\n value={awsEndpoint}\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsRegion\", e.target.value);\n cleanValidation(\"aws_region\");\n }}\n label=\"Region\"\n value={awsRegion}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsKMSKey\", e.target.value);\n }}\n label=\"KMS Key\"\n value={awsKMSKey}\n />\n \n \n \n Credentials \n \n ) => {\n updateField(\"awsAccessKey\", e.target.value);\n cleanValidation(\"aws_accessKey\");\n }}\n label=\"Access Key\"\n value={awsAccessKey}\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsSecretKey\", e.target.value);\n cleanValidation(\"aws_secretKey\");\n }}\n label=\"Secret Key\"\n value={awsSecretKey}\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsToken\", e.target.value);\n }}\n label=\"Token\"\n value={awsToken}\n />\n \n \n \n \n );\n};\n\nexport default AWSKMSAdd;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\n\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport {\n addFileMinIOMTLSCert,\n addFileKESServerCert,\n addFileKMSCa,\n addFileKMSMTLSCert,\n isPageValid,\n updateAddField,\n} from \"../createTenantSlice\";\nimport VaultKMSAdd from \"./Encryption/VaultKMSAdd\";\nimport AzureKMSAdd from \"./Encryption/AzureKMSAdd\";\nimport GCPKMSAdd from \"./Encryption/GCPKMSAdd\";\nimport GemaltoKMSAdd from \"./Encryption/GemaltoKMSAdd\";\nimport AWSKMSAdd from \"./Encryption/AWSKMSAdd\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport CodeMirrorWrapper from \"../../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\ninterface IEncryptionProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n encryptionTypeOptions: {\n marginBottom: 15,\n },\n mutualTlsConfig: {\n marginTop: 15,\n \"& fieldset\": {\n flex: 1,\n },\n },\n rightSpacer: {\n marginRight: 15,\n },\n responsiveContainer: {\n \"@media (max-width: 900px)\": {\n display: \"flex\",\n flexFlow: \"column\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Encryption = ({ classes }: IEncryptionProps) => {\n const dispatch = useAppDispatch();\n\n const replicas = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.replicas\n );\n const rawConfiguration = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.rawConfiguration\n );\n const encryptionTab = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionTab\n );\n const enableEncryption = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.enableEncryption\n );\n const encryptionType = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.encryptionType\n );\n\n const gcpProjectID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpProjectID\n );\n const gcpEndpoint = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpEndpoint\n );\n const gcpClientEmail = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientEmail\n );\n const gcpClientID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpClientID\n );\n const gcpPrivateKeyID = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKeyID\n );\n const gcpPrivateKey = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.gcpPrivateKey\n );\n const enableCustomCertsForKES = useSelector(\n (state: AppState) =>\n state.createTenant.fields.encryption.enableCustomCertsForKES\n );\n const enableAutoCert = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableAutoCert\n );\n const enableTLS = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableTLS\n );\n const minioServerCertificates = useSelector(\n (state: AppState) => state.createTenant.certificates.minioServerCertificates\n );\n const kesServerCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kesServerCertificate\n );\n const minioMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.minioMTLSCertificate\n );\n const kmsMTLSCertificate = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsMTLSCertificate\n );\n const kmsCA = useSelector(\n (state: AppState) => state.createTenant.certificates.kmsCA\n );\n const enableCustomCerts = useSelector(\n (state: AppState) => state.createTenant.fields.security.enableCustomCerts\n );\n const kesSecurityContext = useSelector(\n (state: AppState) => state.createTenant.fields.encryption.kesSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n let encryptionAvailable = false;\n if (\n enableTLS &&\n (enableAutoCert ||\n (minioServerCertificates &&\n minioServerCertificates.filter(\n (item) => item.encoded_key && item.encoded_cert\n ).length > 0))\n ) {\n encryptionAvailable = true;\n }\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"encryption\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (enableEncryption) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"rawConfiguration\",\n required: encryptionTab > 0,\n value: rawConfiguration,\n },\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: kesSecurityContext.runAsUser,\n customValidation:\n kesSecurityContext.runAsUser === \"\" ||\n parseInt(kesSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: kesSecurityContext.runAsGroup,\n customValidation:\n kesSecurityContext.runAsGroup === \"\" ||\n parseInt(kesSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: kesSecurityContext.fsGroup,\n customValidation:\n kesSecurityContext.fsGroup === \"\" ||\n parseInt(kesSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enableCustomCerts) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_key,\n },\n {\n fieldKey: \"serverCert\",\n required: !enableAutoCert,\n value: kesServerCertificate.encoded_cert,\n },\n {\n fieldKey: \"clientKey\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_key,\n },\n {\n fieldKey: \"clientCert\",\n required: !enableAutoCert,\n value: minioMTLSCertificate.encoded_cert,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n dispatch(\n isPageValid({\n pageName: \"encryption\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n rawConfiguration,\n encryptionTab,\n enableEncryption,\n encryptionType,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n dispatch,\n enableAutoCert,\n enableCustomCerts,\n kesServerCertificate.encoded_key,\n kesServerCertificate.encoded_cert,\n minioMTLSCertificate.encoded_key,\n minioMTLSCertificate.encoded_cert,\n kesSecurityContext,\n replicas,\n ]);\n\n return (\n \n \n \n Encryption \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableEncryption\", checked);\n }}\n description=\"\"\n disabled={!encryptionAvailable}\n />\n \n \n \n \n \n MinIO Server-Side Encryption (SSE) protects objects as part of write\n operations, allowing clients to take advantage of server processing\n power to secure objects at the storage layer (encryption-at-rest).\n SSE also provides key functionality to regulatory and compliance\n requirements around secure locking and erasure.\n \n \n \n \n \n\n {enableEncryption && (\n \n \n , value: number) => {\n updateField(\"encryptionTab\", value);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n aria-label=\"cluster-tabs\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n\n {encryptionTab ? (\n \n \n {\n updateField(\"rawConfiguration\", value);\n }}\n editorHeight={\"550px\"}\n />\n \n \n ) : (\n \n \n {\n updateField(\"encryptionType\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n {encryptionType === \"vault\" && }\n {encryptionType === \"azure\" && }\n {encryptionType === \"gcp\" && }\n {encryptionType === \"aws\" && }\n {encryptionType === \"gemalto\" && }\n \n )}\n\n \n
Additional Configurations \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCertsForKES\", checked);\n }}\n label={\"Custom Certificates\"}\n disabled={!enableAutoCert}\n />\n \n {(enableCustomCertsForKES || !enableAutoCert) && (\n \n \n \n \n \n Encryption server certificates\n \n {\n dispatch(\n addFileKESServerCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n error={validationErrors[\"serverKey\"] || \"\"}\n value={kesServerCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileKESServerCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n error={validationErrors[\"serverCert\"] || \"\"}\n value={kesServerCertificate.cert}\n required={!enableAutoCert}\n />\n \n \n \n \n \n \n \n MinIO mTLS certificates (connection between MinIO and\n the Encryption server)\n \n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n error={validationErrors[\"clientKey\"] || \"\"}\n value={minioMTLSCertificate.key}\n required={!enableAutoCert}\n />\n {\n dispatch(\n addFileMinIOMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n error={validationErrors[\"clientCert\"] || \"\"}\n value={minioMTLSCertificate.cert}\n required={!enableAutoCert}\n />\n \n \n \n \n \n \n KMS mTLS certificates (connection between the Encryption\n server and the KMS)\n \n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"key\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_key\");\n }}\n accept=\".key,.pem\"\n id=\"vault_key\"\n name=\"vault_key\"\n label=\"Key\"\n value={kmsMTLSCertificate.key}\n />\n {\n dispatch(\n addFileKMSMTLSCert({\n key: \"cert\",\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_cert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_cert\"\n name=\"vault_cert\"\n label=\"Cert\"\n value={kmsMTLSCertificate.cert}\n />\n {\n dispatch(\n addFileKMSCa({\n fileName: fileName,\n value: encodedValue,\n })\n );\n cleanValidation(\"vault_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_ca\"\n name=\"vault_ca\"\n label=\"CA\"\n value={kmsCA.cert}\n />\n \n \n \n )}\n \n \n ) => {\n updateField(\"replicas\", e.target.value);\n cleanValidation(\"replicas\");\n }}\n label=\"Replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n\n \n \n SecurityContext for KES pods\n \n \n \n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={kesSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={kesSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={kesSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(Encryption);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, SelectChangeEvent } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { LabelKeyPair } from \"../../types\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../common/api\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"../../../../../icons/AddIcon\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport TolerationSelector from \"../../../Common/TolerationSelector/TolerationSelector\";\nimport { setModalErrorSnackMessage } from \"../../../../../systemSlice\";\nimport {\n addNewToleration,\n isPageValid,\n removeToleration,\n setKeyValuePairs,\n setTolerationInfo,\n updateAddField,\n} from \"../createTenantSlice\";\n\ninterface IAffinityProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n overlayAction: {\n marginLeft: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n affinityConfigField: {\n display: \"flex\",\n },\n affinityFieldLabel: {\n display: \"flex\",\n flexFlow: \"column\",\n flex: 1,\n },\n radioField: {\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: 10,\n \"& div:first-child\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n textAlign: \"left !important\",\n },\n },\n affinityLabelKey: {\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n affinityLabelValue: {\n marginLeft: 10,\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n rowActions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n affinityRow: {\n marginBottom: 10,\n display: \"flex\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface OptionPair {\n label: string;\n value: string;\n}\n\nconst Affinity = ({ classes }: IAffinityProps) => {\n const dispatch = useAppDispatch();\n\n const podAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.podAffinity\n );\n const nodeSelectorLabels = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.nodeSelectorLabels\n );\n const withPodAntiAffinity = useSelector(\n (state: AppState) => state.createTenant.fields.affinity.withPodAntiAffinity\n );\n const keyValuePairs = useSelector(\n (state: AppState) => state.createTenant.nodeSelectorPairs\n );\n const tolerations = useSelector(\n (state: AppState) => state.createTenant.tolerations\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n const [loading, setLoading] = useState(true);\n const [keyValueMap, setKeyValueMap] = useState<{ [key: string]: string[] }>(\n {}\n );\n const [keyOptions, setKeyOptions] = useState([]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({\n pageName: \"affinity\",\n field: field,\n value: value,\n })\n );\n },\n [dispatch]\n );\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/nodes/labels`)\n .then((res: { [key: string]: string[] }) => {\n setLoading(false);\n setKeyValueMap(res);\n let keys: OptionPair[] = [];\n for (let k in res) {\n keys.push({\n label: k,\n value: k,\n });\n }\n setKeyOptions(keys);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n setKeyValueMap({});\n });\n }\n }, [dispatch, loading]);\n\n useEffect(() => {\n if (keyValuePairs) {\n const vlr = keyValuePairs\n .filter((kvp) => kvp.key !== \"\")\n .map((kvp) => `${kvp.key}=${kvp.value}`)\n .filter((kvs, i, a) => a.indexOf(kvs) === i);\n const vl = vlr.join(\"&\");\n updateField(\"nodeSelectorLabels\", vl);\n }\n }, [keyValuePairs, updateField]);\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (podAffinity === \"nodeSelector\") {\n let valid = true;\n\n const splittedLabels = nodeSelectorLabels.split(\"&\");\n\n if (splittedLabels.length === 1 && splittedLabels[0] === \"\") {\n valid = false;\n }\n\n splittedLabels.forEach((item: string, index: number) => {\n const splitItem = item.split(\"=\");\n\n if (splitItem.length !== 2) {\n valid = false;\n }\n\n if (index + 1 !== splittedLabels.length) {\n if (splitItem[0] === \"\" || splitItem[1] === \"\") {\n valid = false;\n }\n }\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"labels\",\n required: true,\n value: nodeSelectorLabels,\n customValidation: !valid,\n customValidationMessage:\n \"You need to add at least one label key-pair\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"affinity\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [dispatch, podAffinity, nodeSelectorLabels]);\n\n const updateToleration = (index: number, field: string, value: any) => {\n const alterToleration = { ...tolerations[index], [field]: value };\n\n dispatch(\n setTolerationInfo({\n index: index,\n tolerationValue: alterToleration,\n })\n );\n };\n\n return (\n \n \n
Pod Placement \n \n Configure how pods will be assigned to nodes\n \n \n \n \n Type
\n \n MinIO supports multiple configurations for Pod Affinity\n
\n \n {\n updateField(\"podAffinity\", e.target.value);\n }}\n selectorOptions={[\n { label: \"None\", value: \"none\" },\n { label: \"Default (Pod Anti-Affinity)\", value: \"default\" },\n { label: \"Node Selector\", value: \"nodeSelector\" },\n ]}\n />\n \n \n \n {podAffinity === \"nodeSelector\" && (\n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"withPodAntiAffinity\", checked);\n }}\n label={\"With Pod Anti-Affinity\"}\n />\n \n \n Labels \n {validationErrors[\"labels\"]} \n \n {keyValuePairs &&\n keyValuePairs.map((kvp, i) => {\n return (\n \n \n {keyOptions.length > 0 && (\n ) => {\n const newKey = e.target.value as string;\n const newLKP: LabelKeyPair = {\n key: newKey,\n value: keyValueMap[newKey][0],\n };\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = newLKP;\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.key}\n options={keyOptions}\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"Key\"}\n />\n )}\n \n \n {keyOptions.length > 0 && (\n ) => {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.value}\n options={\n keyValueMap[kvp.key]\n ? keyValueMap[kvp.key].map((v) => {\n return { label: v, value: v };\n })\n : []\n }\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = [...keyValuePairs];\n arrCp[i] = {\n key: arrCp[i].key,\n value: e.target.value as string,\n };\n dispatch(setKeyValuePairs(arrCp));\n }}\n index={i}\n placeholder={\"value\"}\n />\n )}\n \n \n \n
{\n const arrCp = [...keyValuePairs];\n if (keyOptions.length > 0) {\n arrCp.push({\n key: keyOptions[0].value,\n value: keyValueMap[keyOptions[0].value][0],\n });\n } else {\n arrCp.push({ key: \"\", value: \"\" });\n }\n\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={i !== keyValuePairs.length - 1}\n >\n \n \n
\n \n {\n const arrCp = keyValuePairs.filter(\n (item, index) => index !== i\n );\n dispatch(setKeyValuePairs(arrCp));\n }}\n disabled={keyValuePairs.length <= 1}\n >\n \n \n
\n \n \n );\n })}\n \n \n \n )}\n \n \n Tolerations \n \n {validationErrors[\"tolerations\"]}\n \n \n {tolerations &&\n tolerations.map((tol, i) => {\n return (\n \n {\n updateToleration(i, \"effect\", value);\n }}\n tolerationKey={tol.key}\n onTolerationKeyChange={(value) => {\n updateToleration(i, \"key\", value);\n }}\n operator={tol.operator}\n onOperatorChange={(value) => {\n updateToleration(i, \"operator\", value);\n }}\n value={tol.value}\n onValueChange={(value) => {\n updateToleration(i, \"value\", value);\n }}\n tolerationSeconds={tol.tolerationSeconds?.seconds || 0}\n onSecondsChange={(value) => {\n updateToleration(i, \"tolerationSeconds\", {\n seconds: value,\n });\n }}\n index={i}\n />\n \n
{\n dispatch(addNewToleration());\n }}\n disabled={i !== tolerations.length - 1}\n >\n \n \n
\n\n \n dispatch(removeToleration(i))}\n disabled={tolerations.length <= 1}\n >\n \n \n
\n \n );\n })}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(Affinity);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IImagesProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Images = ({ classes }: IImagesProps) => {\n const dispatch = useAppDispatch();\n\n const customImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customImage\n );\n const imageName = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageName\n );\n const customDockerhub = useSelector(\n (state: AppState) => state.createTenant.fields.configure.customDockerhub\n );\n const imageRegistry = useSelector(\n (state: AppState) => state.createTenant.fields.configure.imageRegistry\n );\n const imageRegistryUsername = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryUsername\n );\n const imageRegistryPassword = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.imageRegistryPassword\n );\n\n const prometheusCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusEnabled\n );\n const tenantCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.tenantCustom\n );\n const logSearchCustom = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchEnabled\n );\n const logSearchVolumeSize = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchVolumeSize\n );\n\n const prometheusVolumeSize = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusVolumeSize\n );\n\n const logSearchSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSelectedStorageClass\n );\n const logSearchImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchImage\n );\n const kesImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.kesImage\n );\n const logSearchPostgresImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresImage\n );\n const logSearchPostgresInitImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresInitImage\n );\n const prometheusSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSelectedStorageClass\n );\n const prometheusImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusImage\n );\n const prometheusSidecarImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSidecarImage\n );\n const prometheusInitImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusInitImage\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/operator:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n dispatch,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n
Container Images \n \n Specify the container images used by the Tenant and it's features.\n \n \n\n \n \n ) => {\n updateField(\"imageName\", e.target.value);\n cleanValidation(\"image\");\n }}\n label=\"MinIO\"\n value={imageName}\n error={validationErrors[\"image\"] || \"\"}\n placeholder=\"minio/minio:RELEASE.2022-02-26T02-54-46Z\"\n />\n \n\n \n ) => {\n updateField(\"kesImage\", e.target.value);\n cleanValidation(\"kesImage\");\n }}\n label=\"KES\"\n value={kesImage}\n error={validationErrors[\"kesImage\"] || \"\"}\n placeholder=\"minio/kes:v0.17.6\"\n />\n \n \n Log Search \n \n \n ) => {\n updateField(\"logSearchImage\", e.target.value);\n cleanValidation(\"logSearchImage\");\n }}\n label=\"API\"\n value={logSearchImage}\n error={validationErrors[\"logSearchImage\"] || \"\"}\n placeholder=\"minio/operator:v4.4.22\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresImage\", e.target.value);\n cleanValidation(\"logSearchPostgresImage\");\n }}\n label=\"PostgreSQL\"\n value={logSearchPostgresImage}\n error={validationErrors[\"logSearchPostgresImage\"] || \"\"}\n placeholder=\"library/postgres:13\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresInitImage\", e.target.value);\n cleanValidation(\"logSearchPostgresInitImage\");\n }}\n label=\"PostgreSQL Init\"\n value={logSearchPostgresInitImage}\n error={validationErrors[\"logSearchPostgresInitImage\"] || \"\"}\n placeholder=\"library/busybox:1.33.1\"\n />\n \n \n Monitoring \n \n \n ) => {\n updateField(\"prometheusImage\", e.target.value);\n cleanValidation(\"prometheusImage\");\n }}\n label=\"Prometheus\"\n value={prometheusImage}\n error={validationErrors[\"prometheusImage\"] || \"\"}\n placeholder=\"quay.io/prometheus/prometheus:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusSidecarImage\", e.target.value);\n cleanValidation(\"prometheusSidecarImage\");\n }}\n label=\"Prometheus Sidecar\"\n value={prometheusSidecarImage}\n error={validationErrors[\"prometheusSidecarImage\"] || \"\"}\n placeholder=\"library/alpine:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusInitImage\", e.target.value);\n cleanValidation(\"prometheusInitImage\");\n }}\n label=\"Prometheus Init\"\n value={prometheusInitImage}\n error={validationErrors[\"prometheusInitImage\"] || \"\"}\n placeholder=\"library/busybox:1.33.1\"\n />\n \n \n\n {customImage && (\n \n \n Custom Container Registry \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customDockerhub\", checked);\n }}\n label={\"Use a private container registry\"}\n />\n \n \n )}\n {customDockerhub && (\n \n \n ) => {\n updateField(\"imageRegistry\", e.target.value);\n }}\n label=\"Endpoint\"\n value={imageRegistry}\n error={validationErrors[\"registry\"] || \"\"}\n placeholder=\"https://index.docker.io/v1/\"\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryUsername\", e.target.value);\n }}\n label=\"Username\"\n value={imageRegistryUsername}\n error={validationErrors[\"registryUsername\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryPassword\", e.target.value);\n }}\n label=\"Password\"\n value={imageRegistryPassword}\n error={validationErrors[\"registryPassword\"] || \"\"}\n required\n />\n \n \n )}\n \n );\n};\n\nexport default withStyles(styles)(Images);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nimport { Divider } from \"@mui/material\";\n\ninterface ISizePreviewProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 4,\n },\n table: {\n \"& .MuiTableCell-root\": {\n fontSize: 13,\n },\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst SizePreview = ({ classes }: ISizePreviewProps) => {\n const nodes = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.nodes\n );\n const memoryNode = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesMemoryRequest\n );\n const ecParity = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParity\n );\n\n const distribution = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.distribution\n );\n const ecParityCalc = useSelector(\n (state: AppState) => state.createTenant.fields.tenantSize.ecParityCalc\n );\n\n const cpuToUse = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.resourcesCPURequest\n );\n const integrationSelection = useSelector(\n (state: AppState) =>\n state.createTenant.fields.tenantSize.integrationSelection\n );\n\n const usableInformation = ecParityCalc.storageFactors.find(\n (element) => element.erasureCode === ecParity\n );\n\n return (\n \n
Resource Allocation \n
\n
\n \n \n Number of Servers \n \n {parseInt(nodes) > 0 ? nodes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Drives per Server \n \n {distribution ? distribution.disks : \"-\"}\n \n \n \n Drive Capacity \n \n {distribution ? niceBytes(distribution.pvSize) : \"-\"}\n \n \n \n )}\n\n \n Total Volumes \n \n {distribution ? distribution.persistentVolumes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Memory per Node \n {memoryNode} Gi \n \n \n \n CPU Selection\n \n \n {cpuToUse}\n \n \n \n )}\n \n
\n {ecParityCalc.error === 0 && usableInformation && (\n
\n Erasure Code Configuration \n \n \n \n \n EC Parity \n \n {ecParity !== \"\" ? ecParity : \"-\"}\n \n \n \n Raw Capacity \n \n {niceBytes(ecParityCalc.rawCapacity)}\n \n \n \n Usable Capacity \n \n {niceBytes(usableInformation.maxCapacity)}\n \n \n \n \n Server Failures Tolerated\n \n \n {distribution\n ? Math.floor(\n usableInformation.maxFailureTolerations /\n distribution.disks\n )\n : \"-\"}\n \n \n \n
\n \n )}\n {integrationSelection.typeSelection !== \"\" &&\n integrationSelection.storageClass !== \"\" && (\n
\n Single Instance Configuration \n \n \n \n \n CPU \n \n {integrationSelection.CPU !== 0\n ? integrationSelection.CPU\n : \"-\"}\n \n \n \n Memory \n \n {integrationSelection.memory !== 0\n ? `${integrationSelection.memory} Gi`\n : \"-\"}\n \n \n \n Drives per Server \n \n {integrationSelection.drivesPerServer !== 0\n ? `${integrationSelection.drivesPerServer}`\n : \"-\"}\n \n \n \n \n Drive Size\n \n \n {integrationSelection.driveSize.driveSize}\n {integrationSelection.driveSize.sizeUnit}\n \n \n \n
\n \n )}\n
\n );\n};\n\nexport default withStyles(styles)(SizePreview);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useSelector } from \"react-redux\";\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n deleteDialogStyles,\n modalBasic,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"../../../../../../icons\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { closeAddNSModal } from \"../../createTenantSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { createNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...modalBasic,\n ...deleteDialogStyles,\n })\n);\n\nconst AddNamespaceModal = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace\n );\n const addNamespaceLoading = useSelector(\n (state: AppState) => state.createTenant.addNSLoading\n );\n const addNamespaceOpen = useSelector(\n (state: AppState) => state.createTenant.addNSOpen\n );\n\n return (\n }\n isLoading={addNamespaceLoading}\n onConfirm={() => {\n dispatch(createNamespaceAsync());\n }}\n onClose={() => {\n dispatch(closeAddNSModal());\n }}\n confirmationContent={\n \n {addNamespaceLoading && }\n \n Are you sure you want to add a namespace called\n \n {namespace} ?\n \n \n }\n />\n );\n};\n\nexport default AddNamespaceModal;\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, useMemo } from \"react\";\nimport AddIcon from \"../../../../../../icons/AddIcon\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { openAddNSModal, setNamespace } from \"../../createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport AddNamespaceModal from \"../helpers/AddNamespaceModal\";\nimport debounce from \"lodash/debounce\";\nimport { IMkEnvs } from \"./utils\";\nimport { validateNamespaceAsync } from \"../../thunks/namespaceThunks\";\n\nconst NamespaceSelector = ({ formToRender }: { formToRender?: IMkEnvs }) => {\n const dispatch = useAppDispatch();\n\n const namespace = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.namespace\n );\n\n const showNSCreateButton = useSelector(\n (state: AppState) => state.createTenant.showNSCreateButton\n );\n\n const namespaceError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"namespace\"]\n );\n const openAddNSConfirm = useSelector(\n (state: AppState) => state.createTenant.addNSOpen\n );\n\n const debounceNamespace = useMemo(\n () =>\n debounce(() => {\n dispatch(validateNamespaceAsync());\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n if (namespace !== \"\") {\n debounceNamespace();\n // Cancel previous debounce calls during useEffect cleanup.\n return debounceNamespace.cancel;\n }\n }, [debounceNamespace, namespace]);\n\n const addNamespace = () => {\n dispatch(openAddNSModal());\n };\n\n return (\n \n {openAddNSConfirm && }\n ) => {\n dispatch(setNamespace(e.target.value));\n }}\n label=\"Namespace\"\n value={namespace}\n error={namespaceError || \"\"}\n overlayId={\"add-namespace\"}\n overlayIcon={showNSCreateButton ? : null}\n overlayAction={addNamespace}\n required\n />\n \n );\n};\nexport default NamespaceSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport SizePreview from \"../SizePreview\";\nimport TenantSize from \"./TenantSize\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport { IMkEnvs, mkPanelConfigurations } from \"./utils\";\nimport {\n isPageValid,\n setStorageType,\n setTenantName,\n updateAddField,\n} from \"../../createTenantSlice\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport NamespaceSelector from \"./NamespaceSelector\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizePreview: {\n marginLeft: 10,\n background: \"#FFFFFF\",\n border: \"1px solid #EAEAEA\",\n padding: 2,\n marginTop: 20,\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst NameTenantField = () => {\n const dispatch = useAppDispatch();\n const tenantName = useSelector(\n (state: AppState) => state.createTenant.fields.nameTenant.tenantName\n );\n\n const tenantNameError = useSelector(\n (state: AppState) => state.createTenant.validationErrors[\"tenant-name\"]\n );\n\n return (\n ) => {\n dispatch(setTenantName(e.target.value));\n }}\n label=\"Name\"\n value={tenantName}\n required\n error={tenantNameError || \"\"}\n />\n );\n};\n\ninterface INameTenantMainScreen {\n classes: any;\n formToRender?: IMkEnvs;\n}\n\nconst NameTenantMain = ({ classes, formToRender }: INameTenantMainScreen) => {\n const dispatch = useAppDispatch();\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const selectedStorageType = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageType\n );\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const features = useSelector(selFeatures);\n\n // Common\n const updateField = useCallback(\n (field: string, value: string) => {\n dispatch(\n updateAddField({ pageName: \"nameTenant\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n const isValid =\n (formToRender === IMkEnvs.default && storageClasses.length > 0) ||\n (formToRender !== IMkEnvs.default && selectedStorageType !== \"\");\n\n dispatch(isPageValid({ pageName: \"nameTenant\", valid: isValid }));\n }, [storageClasses, dispatch, selectedStorageType, formToRender]);\n\n return (\n \n \n \n \n \n \n \n
Name \n \n How would you like to name this new tenant?\n \n \n \n \n
\n \n \n \n \n {formToRender === IMkEnvs.default ? (\n \n ) => {\n updateField(\n \"selectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Storage Class\"\n value={selectedStorageClass}\n options={storageClasses}\n disabled={storageClasses.length < 1}\n />\n \n ) : (\n \n ) => {\n dispatch(\n setStorageType({\n storageType: e.target.value as string,\n features: features,\n })\n );\n }}\n label={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorLabel`,\n \"Storage Type\"\n )}\n value={selectedStorageType}\n options={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorValues`,\n []\n )}\n />\n \n )}\n {formToRender === IMkEnvs.default ? (\n \n ) : (\n get(\n mkPanelConfigurations,\n `${formToRender}.sizingComponent`,\n null\n )\n )}\n \n \n \n \n \n \n
\n \n \n \n );\n};\n\nexport default withStyles(styles)(NameTenantMain);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { selFeatures } from \"../../../../consoleSlice\";\n\nconst TenantResources = () => {\n const features = useSelector(selFeatures);\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nexport default TenantResources;\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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchEnabledFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst ConfigLogSearch = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const logSearchEnabled = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchEnabled\n );\n const logSearchVolumeSize = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchVolumeSize\n );\n const logSearchSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSelectedStorageClass\n );\n const logSearchImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.logSearchImage\n );\n const logSearchPostgresImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresImage\n );\n const logSearchPostgresInitImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresInitImage\n );\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n const logSearchSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchSecurityContext\n );\n const logSearchPostgresSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.logSearchPostgresSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (logSearchEnabled) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n logSearchImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n dispatch,\n logSearchEnabled,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n \n Audit Log \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"logSearchEnabled\", checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n \n \n \n \n Deploys a small PostgreSQL database and stores access logs of all\n calls into the tenant.\n \n \n \n \n \n {logSearchEnabled && (\n \n \n ) => {\n updateField(\n \"logSearchSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Log Search Storage Class\"\n value={logSearchSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n \n ) => {\n updateField(\"logSearchVolumeSize\", e.target.value);\n cleanValidation(\"log_search_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={logSearchVolumeSize}\n required\n error={validationErrors[\"log_search_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n \n\n \n \n SecurityContext for LogSearch\n \n\n \n \n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"logSearch_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"logSearch_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"logSearch_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n \n SecurityContext for PostgreSQL\n \n\n \n \n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchPostgresSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"postgres_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchPostgresSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"postgres_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchPostgresSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"postgres_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(ConfigLogSearch);\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 { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport SectionH1 from \"../../../Common/SectionH1\";\nimport { isPageValid, updateAddField } from \"../createTenantSlice\";\n\ninterface IConfigureProps {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusEnabledFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst ConfigPrometheus = ({ classes }: IConfigureProps) => {\n const dispatch = useAppDispatch();\n\n const storageClasses = useSelector(\n (state: AppState) => state.createTenant.storageClasses\n );\n const prometheusEnabled = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusEnabled\n );\n const prometheusVolumeSize = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusVolumeSize\n );\n const prometheusSelectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSelectedStorageClass\n );\n const prometheusImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusImage\n );\n const prometheusSidecarImage = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSidecarImage\n );\n const prometheusInitImage = useSelector(\n (state: AppState) => state.createTenant.fields.configure.prometheusInitImage\n );\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n const tenantSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.tenantSecurityContext\n );\n const prometheusSecurityContext = useSelector(\n (state: AppState) =>\n state.createTenant.fields.configure.prometheusSecurityContext\n );\n\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n dispatch(\n updateAddField({ pageName: \"configure\", field: field, value: value })\n );\n },\n [dispatch]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (prometheusEnabled) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n dispatch(\n isPageValid({\n pageName: \"configure\",\n valid: Object.keys(commonVal).length === 0,\n })\n );\n\n setValidationErrors(commonVal);\n }, [\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n dispatch,\n prometheusEnabled,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n tenantSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n }\n }, [\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n \n \n Monitoring \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"prometheusEnabled\", checked);\n }}\n description=\"\"\n />\n \n \n \n \n A small Prometheus will be deployed to keep metrics about the tenant.\n \n \n \n \n \n \n {prometheusEnabled && (\n \n \n ) => {\n updateField(\n \"prometheusSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Storage Class\"\n value={prometheusSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n \n ) => {\n updateField(\"prometheusVolumeSize\", e.target.value);\n cleanValidation(\"prometheus_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={prometheusVolumeSize}\n required\n error={validationErrors[\"prometheus_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n \n \n \n SecurityContext\n \n \n \n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={prometheusSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\n \"prometheus_securityContext_runAsGroup\"\n );\n }}\n label=\"Run As Group\"\n value={prometheusSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n \n \n \n \n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={prometheusSecurityContext.fsGroup}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_fsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n fsGroupChangePolicy: e.target.value,\n });\n }}\n options={[\n {\n label: \"Always\",\n value: \"Always\",\n },\n {\n label: \"OnRootMismatch\",\n value: \"OnRootMismatch\",\n },\n ]}\n />\n
\n
\n \n \n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(ConfigPrometheus);\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 .\nexport const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\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 { Button } from \"mds\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { requiredPages } from \"./common\";\nimport { createTenantAsync } from \"./thunks/createTenantThunk\";\n\nconst CreateTenantButton = () => {\n const dispatch = useAppDispatch();\n\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant\n );\n\n const validPages = useSelector(\n (state: AppState) => state.createTenant.validPages\n );\n\n const selectedStorageClass = useSelector(\n (state: AppState) =>\n state.createTenant.fields.nameTenant.selectedStorageClass\n );\n\n const enabled =\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v));\n\n return (\n {\n dispatch(createTenantAsync());\n }}\n disabled={!enabled}\n key={`button-AddTenant-Create`}\n label={\"Create\"}\n />\n );\n};\n\nexport default CreateTenantButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst NewTenantCredentials = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const showNewCredentials = useSelector(\n (state: AppState) => state.createTenant.showNewCredentials\n );\n const createdAccount = useSelector(\n (state: AppState) => state.createTenant.createdAccount\n );\n\n return (\n \n {showNewCredentials && (\n {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n }}\n entity=\"Tenant\"\n />\n )}\n \n );\n};\n\nexport default NewTenantCredentials;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport {\n IWizardButton,\n IWizardElement,\n} from \"../../Common/GenericWizard/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport BackLink from \"../../../../common/BackLink\";\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\nimport ConfigLogSearch from \"./Steps/ConfigLogSearch\";\nimport ConfigPrometheus from \"./Steps/ConfigPrometheus\";\nimport {\n IMkEnvs,\n resourcesConfigurations,\n} from \"./Steps/TenantResources/utils\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { StorageIcon } from \"../../../../icons\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { resetAddTenantForm } from \"./createTenantSlice\";\nimport CreateTenantButton from \"./CreateTenantButton\";\nimport NewTenantCredentials from \"./NewTenantCredentials\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n })\n);\n\nconst AddTenant = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const features = useSelector(selFeatures);\n\n // Fields\n const addSending = useSelector(\n (state: AppState) => state.createTenant.addingTenant\n );\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n dispatch(resetAddTenantForm());\n navigate(\"/tenants\");\n },\n };\n\n const createButton: IWizardButton = {\n componentRender: ,\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Audit Log\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Monitoring\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n return (\n \n \n {\n dispatch(resetAddTenantForm());\n }}\n />\n }\n />\n\n \n {addSending && (\n \n \n \n )}\n \n \n \n {formRender === IMkEnvs.aws && (\n \n }\n help={\n \n Performance Optimized : Uses the gp3 EBS storage\n class class configured at 1,000Mi/s throughput and 16,000\n IOPS, however the minimum volume size for this type of EBS\n volume is 32Gi .\n \n \n Storage Optimized : Uses the sc1 EBS storage\n class, however the minimum volume size for this type of EBS\n volume is \n 16Ti to unlock their maximum throughput speed of\n 250Mi/s.\n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default AddTenant;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport CertificateIcon from \"../../../../icons/CertificateIcon\";\nimport { useParams } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n \n {description}\n
\n \n );\n};\nconst TLSHelpBox = () => {\n const params = useParams();\n const tenantNameParam = params.tenantName || \"\";\n const tenantNamespaceParam = params.tenantNamespace || \"\";\n const namespace = useSelector((state: AppState) => {\n var defaultNamespace = \"\";\n if (tenantNamespaceParam !== \"\") {\n return tenantNamespaceParam;\n }\n if (state.createTenant.fields.nameTenant.namespace !== \"\") {\n return state.createTenant.fields.nameTenant.namespace;\n }\n return defaultNamespace;\n });\n\n const tenantName = useSelector((state: AppState) => {\n var defaultTenantName = \"\";\n if (tenantNameParam !== \"\") {\n return tenantNameParam;\n }\n\n if (state.createTenant.fields.nameTenant.tenantName !== \"\") {\n return state.createTenant.fields.nameTenant.tenantName;\n }\n return defaultTenantName;\n });\n\n return (\n \n \n }\n description={`TLS Certificates Warning`}\n />\n \n Automatic certificate generation is not enabled.\n \n \n If you wish to continue only with custom certificates make sure\n they are valid for the following internode hostnames, i.e.:\n \n \n \n minio.{namespace}\n \n minio.{namespace}.svc\n \n minio.{namespace}.svc.<cluster domain>\n \n *.{tenantName}-hl.{namespace}.svc.<cluster domain>\n \n *.{namespace}.svc.<cluster domain>\n
\n \n Replace <tenant-name> ,{\" \"}\n <namespace> and\n <cluster domain> with the actual values for your\n MinIO tenant.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n \n \n );\n};\n\nexport default TLSHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Grid } from \"@mui/material\";\nimport LDAPIcon from \"../../../icons/LDAPIcon\";\nimport { OIDCIcon } from \"../../../icons\";\nimport { UsersIcon } from \"../../../icons\";\n\nexport const OIDCLogoElement = () => {\n return (\n \n \n \n \n Open ID \n \n );\n};\n\nexport const LDAPLogoElement = () => {\n return (\n \n \n \n \n LDAP / Active Directory \n \n );\n};\n\nexport const BuiltInLogoElement = () => {\n return (\n \n \n \n \n Built-in \n \n );\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"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: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z\"\n}), 'Casino');\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: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n position: 'relative',\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n top: '50%',\n content: '\"\"',\n transform: 'translateY(50%)'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n top: '0%',\n left: '50%',\n borderTop: 0,\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n transform: 'translateX(0%)'\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.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 * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\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`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.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 text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","props","xmlns","fill","viewBox","id","d","transform","clipPath","flexFlow","padding","inputWithCopy","background","inputLabel","fieldBasic","label","value","OutlinedInput","readOnly","endAdornment","InputAdornment","position","TooltipWrapper","tooltip","text","onClick","onMouseDown","style","icon","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","warningBlock","color","margin","credentialTitle","buttonContainer","justifyContent","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","titleIcon","Grid","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","undefined","WarnIcon","consoleExtras","itemMap","url","api","path","JSON","stringify","variant","length","allCredentials","mode","onBeforeChange","editorHeight","sx","tooltipContainer","placement","overflow","language","onChange","evn","target","fontFamily","minHeight","borderTop","marginLeft","type","tooltipHelper","valueString","maxWidth","whiteSpace","textOverflow","fileInputField","fileInputStyles","textBoxContainer","name","disabled","required","error","accept","useState","showFileSelector","setShowSelector","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","Tooltip","HelpIcon","e","fileName","evt","callback","file","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","deleteDialogStyles","content","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","dispatch","useAppDispatch","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","scroll","event","reason","titleText","closeContainer","closeButton","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","configSectionItem","tenantCustomizationFields","containerItem","fieldGroup","createTenantCommon","responsiveSectionItem","wrapperContainer","envVarRow","borderBottom","flex","minWidth","fileItem","rowActions","overlayAction","modalBasic","wizardCommon","formFieldStyles","exposeMinIO","createTenant","fields","configure","exposeConsole","setDomains","consoleDomain","minioDomains","tenantCustom","tenantEnvVars","envVars","tenantSecurityContext","validationErrors","setValidationErrors","updateField","useCallback","field","updateAddField","pageName","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","minioExtraValidations","validation","pattern","customPatternMessage","commonVal","commonFormValidation","isPageValid","valid","Object","keys","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","h3Section","descriptionText","FormSwitchWrapper","checked","InputBoxWrapper","placeholder","domain","copyDomains","updateMinIODomain","addNewMinIODomain","Add","removeMinIODomain","RemoveIcon","multiContainer","min","SelectWrapper","fsGroupChangePolicy","options","runAsNonRoot","Divider","envVar","formFieldRow","key","existingEnvVars","setEnvVars","keyPair","i","push","filter","fIndex","useStyles","makeStyles","adUserDnRows","buttonTray","idpSelection","identityProvider","ADURL","ADSkipTLS","ADServerInsecure","ADGroupSearchBaseDN","ADGroupSearchFilter","ADUserDNs","ADGroupDNs","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","customIDPValidation","Fragment","Typography","gutterBottom","_","setIDPADUsrAtIndex","userDN","addIDPADUsrAtIndex","removeIDPADUsrAtIndex","Delete","setIDPADGroupAtIndex","addIDPADGroupAtIndex","removeIDPADGroupAtIndex","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDCallbackURL","openIDClaimName","openIDScopes","shortened","gridTemplateColumns","gridGap","accessKeys","secretKeys","setIDPUsrAtIndex","setIDPPwdAtIndex","addIDPNewKeyPair","removeIDPKeyPairAtIndex","getRandomString","Casino","protocolRadioOptions","RadioGroupSelector","currentSelection","setIDP","selectorOptions","minioCertificateRows","minioCertsContainer","minioCACertsRow","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","minioServerCertificates","minioClientCertificates","caCertificates","minioCAsCertificates","spacing","description","TLSHelpBox","FileSelector","encodedValue","addFileToKeyPair","cert","addKeyPair","deleteKeyPair","addFileToClientKeyPair","addClientKeyPair","deleteClientKeyPair","addFileToCaCertificates","addCaCertificate","deleteCaCertificate","encryptionTab","encryption","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","encryptionValidation","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","replicas","rawConfiguration","enableEncryption","encryptionType","enableCustomCertsForKES","kesServerCertificate","minioMTLSCertificate","kmsMTLSCertificate","kmsCA","kesSecurityContext","encryptionAvailable","encoded_key","encoded_cert","textAlign","indicatorLabels","hrClass","Tabs","indicatorColor","textColor","scrollButtons","Tab","CodeMirrorWrapper","editor","addFileKESServerCert","addFileMinIOMTLSCert","addFileKMSMTLSCert","addFileKMSCa","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","tolerations","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","then","res","k","catch","err","setModalErrorSnackMessage","vl","kvp","kvs","a","indexOf","join","splittedLabels","forEach","splitItem","updateToleration","alterToleration","setTolerationInfo","tolerationValue","affinityHelpText","newKey","newLKP","arrCp","setKeyValuePairs","v","AddIcon","tol","TolerationSelector","effect","onEffectChange","tolerationKey","onTolerationKeyChange","operator","onOperatorChange","onValueChange","tolerationSeconds","seconds","onSecondsChange","addNewToleration","removeToleration","customImage","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","prometheusCustom","prometheusEnabled","logSearchCustom","logSearchEnabled","logSearchVolumeSize","prometheusVolumeSize","logSearchSelectedStorageClass","logSearchImage","kesImage","logSearchPostgresImage","logSearchPostgresInitImage","prometheusSelectedStorageClass","prometheusImage","prometheusSidecarImage","prometheusInitImage","table","nodes","tenantSize","memoryNode","resourcesMemoryRequest","ecParity","distribution","ecParityCalc","cpuToUse","resourcesCPURequest","integrationSelection","usableInformation","storageFactors","find","erasureCode","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","drivesPerServer","driveSize","sizeUnit","wrapText","wordWrap","namespace","nameTenant","addNamespaceLoading","addNSLoading","addNamespaceOpen","addNSOpen","ConfirmDialog","confirmText","confirmButtonProps","isOpen","isLoading","onConfirm","createNamespaceAsync","closeAddNSModal","confirmationContent","LinearProgress","DialogContentText","formToRender","showNSCreateButton","namespaceError","openAddNSConfirm","debounceNamespace","useMemo","debounce","validateNamespaceAsync","cancel","setNamespace","overlayId","overlayIcon","openAddNSModal","NameTenantField","tenantName","tenantNameError","setTenantName","sizePreview","selectedStorageClass","selectedStorageType","storageClasses","features","selFeatures","isValid","IMkEnvs","setStorageType","storageType","mkPanelConfigurations","TenantSize","formRender","setFormRender","setConfiguration","resourcesConfigurations","includes","logSearchEnabledFields","fieldSpaceTop","logSearchSecurityContext","logSearchPostgresSecurityContext","configureSTClasses","overlayObject","InputUnitMenu","onUnitChange","unitSelected","unitsList","prometheusEnabledFields","prometheusSecurityContext","requiredPages","addSending","addingTenant","validPages","enabled","every","createTenantAsync","navigate","useNavigate","showNewCredentials","createdAccount","CredentialsPrompt","resetAddTenantForm","pageBox","settingsCommon","cancelButton","action","createButton","componentRender","filteredWizardSteps","buttons","advancedOnly","PageHeader","BackLink","to","executeOnClick","PageLayout","GenericWizard","wizardSteps","HelpBox","FeatureItem","fontStyle","params","useParams","tenantNameParam","tenantNamespaceParam","tenantNamespace","href","rel","OIDCLogoElement","columnGap","LDAPLogoElement","BuiltInLogoElement","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","_excluded","DividerRoot","styled","slot","overridesResolver","styles","ownerState","absolute","light","orientation","vertical","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","_extends","flexShrink","borderWidth","borderStyle","borderColor","vars","divider","borderBottomWidth","bottom","left","dividerChannel","alpha","borderRightWidth","alignSelf","top","flexDirection","borderLeft","DividerWrapper","wrapper","wrapperVertical","React","inProps","ref","useThemeProps","role","other","_objectWithoutPropertiesLoose","slots","composeClasses","getDividerUtilityClass","useUtilityClasses","_jsx","as","clsx"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1367.7ad56d1c.chunk.js b/portal-ui/build/static/js/1367.7ad56d1c.chunk.js
new file mode 100644
index 000000000..87d0738c5
--- /dev/null
+++ b/portal-ui/build/static/js/1367.7ad56d1c.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1367,2691],{92217:function(e,n,t){"use strict";var i=t(1413),r=t(72791),o=t(61889),a=t(30829),s=t(20068),c=t(64554),l=t(11135),d=t(25787),u=t(75952),p=t(23814),h=t(78029),f=t.n(h),x=t(90932),m=t(27454),v=t(80184);n.Z=(0,d.Z)((function(e){return(0,l.Z)((0,i.Z)({},p.YI))}))((function(e){var n=e.value,t=e.label,i=void 0===t?"":t,l=e.tooltip,d=void 0===l?"":l,p=e.mode,h=void 0===p?"json":p,Z=e.classes,b=e.onBeforeChange,j=(e.readOnly,e.editorHeight),g=void 0===j?"250px":j;return(0,v.jsxs)(r.Fragment,{children:[(0,v.jsx)(o.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,v.jsxs)(a.Z,{className:Z.inputLabel,children:[(0,v.jsx)("span",{children:i}),""!==d&&(0,v.jsx)("div",{className:Z.tooltipContainer,children:(0,v.jsx)(s.Z,{title:d,placement:"top-start",children:(0,v.jsx)("div",{className:Z.tooltip,children:(0,v.jsx)(u.byK,{})})})})]})}),(0,v.jsx)(o.ZP,{item:!0,xs:12,style:{maxHeight:g,overflow:"auto",border:"1px solid #eaeaea"},children:(0,v.jsx)(x.Z,{value:n,language:h,onChange:function(e){b(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:g||"initial",color:"#000000"}})}),(0,v.jsx)(o.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,v.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,v.jsx)(m.Z,{tooltip:"Copy to Clipboard",children:(0,v.jsx)(f(),{text:n,children:(0,v.jsx)(u.zxk,{type:"button",id:"copy-code-mirror",icon:(0,v.jsx)(u.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},59114:function(e,n,t){"use strict";var i=t(4942),r=t(1413),o=(t(72791),t(63466)),a=t(75952),s=t(27391),c=t(25787),l=t(11135),d=t(23814),u=t(80184);n.Z=(0,c.Z)((function(e){return(0,l.Z)({searchField:(0,r.Z)({},d.qg.searchField),adornment:{}})}))((function(e){var n=e.placeholder,t=void 0===n?"":n,r=e.classes,c=e.onChange,l=e.adornmentPosition,d=void 0===l?"end":l,p=e.overrideClass,h=e.value,f=(0,i.Z)({disableUnderline:!0},"".concat(d,"Adornment"),(0,u.jsx)(o.Z,{position:d,className:r.adornment,children:(0,u.jsx)(a.W1M,{})}));return(0,u.jsx)(s.Z,{placeholder:t,className:p||r.searchField,id:"search-resource",label:"",InputProps:f,onChange:function(e){c(e.target.value)},variant:"standard",value:h})}))},50276:function(e,n,t){"use strict";var i=t(1413),r=t(29439),o=t(72791),a=t(64554),s=t(43896),c=t(83449),l=t(47283),d=t(82851),u=t(25787),p=t(13967),h=t(11135),f=t(95193),x=t(57689),m=t(80184),v={minHeight:60};n.Z=(0,u.Z)((function(e){return(0,h.Z)({tabsContainer:{display:"flex",height:"100%",width:"100%"},tabsHeaderContainer:{width:"300px",background:"#F8F8F8",borderRight:"1px solid #EAEAEA","& .MuiTabs-root":{"& .MuiTabs-indicator":{display:"none"},"& .MuiTab-root":{display:"flex",flexFlow:"row",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","& .MuiSvgIcon-root":{marginRight:8,marginBottom:0},"&.Mui-selected":{background:"#E5E5E5",fontWeight:600}},"&. MuiTabs-scroller":{display:"none"}}},tabContentContainer:{width:"100%","& .MuiTabPanel-root":{height:"100%"}},tabPanel:{height:"100%"},"@media (max-width: 900px)":{tabsContainer:{flexFlow:"column",flexDirection:"column"},tabsHeaderContainer:{width:"100%",borderBottom:" 1px solid #EAEAEA","& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root":{borderBottom:" 0px"}}}})}))((function(e){var n=e.children,t=e.classes,u=e.selectedTab,h=void 0===u?"0":u,Z=e.routes,b=e.isRouteTabs,j=(0,p.Z)(),g=(0,x.TH)().pathname,y=void 0===g?"":g,C=(0,f.Z)(j.breakpoints.down("md")),E=(0,o.useState)(h),P=(0,r.Z)(E,2),w=P[0],S=P[1],M=[],N=[];if((0,o.useEffect)((function(){if(b){var e=n.find((function(e){return e.tabConfig.to===y}));e&&S(e.tabConfig.value)}}),[b,n,y]),!n)return null;n.forEach((function(e){M.push(e.tabConfig),N.push(e.content)}));return(0,m.jsx)(c.ZP,{value:"".concat(w),children:(0,m.jsxs)(a.Z,{className:t.tabsContainer,children:[(0,m.jsx)(a.Z,{className:t.tabsHeaderContainer,children:(0,m.jsx)(l.Z,{onChange:function(e,n){S(n)},orientation:C?"horizontal":"vertical",variant:C?"scrollable":"standard",scrollButtons:"auto",className:t.tabList,children:M.map((function(e,n){return e?(0,m.jsx)(s.Z,(0,i.Z)((0,i.Z)({className:t.tabHeader,value:"".concat(n),style:v},e),{},{disableRipple:!0,disableTouchRipple:!0,focusRipple:!0}),"v-tab-".concat(n)):null}))})}),(0,m.jsxs)(a.Z,{className:t.tabContentContainer,children:[b?null:N.map((function(e,n){return(0,m.jsx)(d.Z,{classes:(0,i.Z)({},t.tabPanel),value:"".concat(n),children:e||null},"v-tab-p-".concat(n))})),b?(0,m.jsx)("div",{className:t.tabPanel,children:Z}):null]})]})})}))},879:function(e,n,t){"use strict";t.d(n,{D_:function(){return a},Et:function(){return r},GJ:function(){return o},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#E7A219"},r=function(e,n){return e<=n/2?i.RED:2!==n&&e===n/2+1?i.YELLOW:e===n?i.GREEN:void 0},o=function(e){switch(e){case"offline":return i.RED;case"online":return i.GREEN;default:return i.YELLOW}},a=function(e,n){return e<=n/2?i.RED:e===n/2+1?i.YELLOW:e===n?i.GREEN:void 0}},1191:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return H}});var i=t(29439),r=t(1413),o=t(72791),a=t(78687),s=t(57689),c=t(75952),l=t(11135),d=t(25787),u=t(23814),p=t(35527),h=t(61889),f=t(40986),x=t(92983),m=t(81207),v=t(32291),Z=t(92217),b=t(63466),j=t(27391),g=t(14917),y=t(74794),C=t(50276),E=t(84669),P=t(56087),w=t(38442),S=t(75578),M=t(64554),N=t(59114),R=t(879),T=t(80184),k={display:"grid",gridTemplateColumns:"60px 1fr",gap:"15px"},F=function(e){var n=e.search,t=void 0===n?"":n,i=e.children,r=void 0===i?"":i,o=new RegExp("(".concat(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(t),")"),"i"),a=String(r).split(o);return t?a.map((function(e,n){return o.test(e)?(0,T.jsx)("mark",{children:e},n):e})):r},A=(0,d.Z)((function(e){return(0,l.Z)({searchField:(0,r.Z)((0,r.Z)({},u.qg.searchField),{},{maxWidth:380})})}))((function(e){var n=e.policyStatements,t=e.classes,r=void 0===t?{}:t,a=(0,o.useState)(""),s=(0,i.Z)(a,2),l=s[0],d=s[1];return(0,T.jsxs)(h.ZP,{container:!0,children:[(0,T.jsx)(h.ZP,{item:!0,xs:12,children:(0,T.jsxs)(M.Z,{sx:{display:"grid",gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},alignItems:"center",justifyContent:"space-between",gap:"15px"},children:[(0,T.jsx)(M.Z,{children:"Statements"}),(0,T.jsx)(N.Z,{placeholder:"Search",onChange:d,overrideClass:r.searchField,value:l})]})}),(0,T.jsx)(h.ZP,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:n.map((function(e,n){var t=e.Effect,i="Allow"===t;return(0,T.jsxs)(M.Z,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,T.jsxs)(M.Z,{sx:k,children:[(0,T.jsx)(M.Z,{className:"label",children:"Effect:"}),(0,T.jsxs)(M.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:i?R.yh.GREEN:R.yh.RED,height:"14px",width:"14px"}},children:[i?(0,T.jsx)(c.E31,{}):(0,T.jsx)(c.dRf,{}),t]})]}),(0,T.jsxs)(M.Z,{sx:{display:"grid",gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"15px"},children:[(0,T.jsxs)(M.Z,{sx:k,children:[(0,T.jsx)(M.Z,{className:"label",children:"Actions:"}),(0,T.jsx)(M.Z,{children:e.Action&&e.Action.map((function(e,t){return(0,T.jsx)("div",{children:(0,T.jsx)(F,{search:l,children:e})},"".concat(n,"-r-").concat(t))}))})]}),(0,T.jsxs)(M.Z,{sx:k,children:[(0,T.jsx)(M.Z,{className:"label",children:"Resources:"}),(0,T.jsx)(M.Z,{children:e.Resource&&e.Resource.map((function(e,t){return(0,T.jsxs)("div",{children:[" ",(0,T.jsx)(F,{search:l,children:e})]},"".concat(n,"-r-").concat(t))}))})]})]})]},"".concat(n))}))})]})})),L=t(45248),I=t(87995),z=t(46078),O=t(25469),B=t(27454),D=(0,S.Z)(o.lazy((function(){return t.e(312).then(t.bind(t,312))}))),H=(0,d.Z)((function(e){return(0,l.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({buttonContainer:{display:"flex",justifyContent:"flex-end",paddingTop:16,"& button":{marginLeft:8}},pageContainer:{border:"1px solid #EAEAEA",height:"100%"},paperContainer:{padding:"15px 15px 15px 50px",minHeight:"450px"},statement:{border:"1px solid #DADADA",padding:8,marginBottom:8,borderRadius:4},labelCol:{fontWeight:"bold"}},u.OR),u.qg),u.oO),(0,u.Bz)(e.spacing(4))))}))((function(e){var n=e.classes,t=(0,O.TL)(),r=(0,s.s0)(),l=(0,s.UO)(),d=(0,a.v9)(z.$4),u=(0,o.useState)(null),S=(0,i.Z)(u,2),M=S[0],N=S[1],R=(0,o.useState)([]),k=(0,i.Z)(R,2),F=k[0],H=k[1],G=(0,o.useState)([]),U=(0,i.Z)(G,2),W=U[0],_=U[1],V=(0,o.useState)([]),K=(0,i.Z)(V,2),Y=K[0],J=K[1],q=(0,o.useState)(!1),Q=(0,i.Z)(q,2),X=Q[0],$=Q[1],ee=(0,L.IO)(l.policyName||""),ne=(0,o.useState)(""),te=(0,i.Z)(ne,2),ie=te[0],re=te[1],oe=(0,o.useState)(!0),ae=(0,i.Z)(oe,2),se=ae[0],ce=ae[1],le=(0,o.useState)(""),de=(0,i.Z)(le,2),ue=de[0],pe=de[1],he=(0,o.useState)(!0),fe=(0,i.Z)(he,2),xe=fe[0],me=fe[1],ve=(0,o.useState)(""),Ze=(0,i.Z)(ve,2),be=Ze[0],je=Ze[1],ge=(0,o.useState)(!0),ye=(0,i.Z)(ge,2),Ce=ye[0],Ee=ye[1],Pe=(0,o.useState)(!1),we=(0,i.Z)(Pe,2),Se=we[0],Me=we[1],Ne=d&&d.includes("ldap-idp")||!1,Re=(0,w.F)(P.C3,P.K6,!0),Te=(0,w.F)(P.C3,P.k_,!0),ke=(0,w.F)(P.C3,P.Rs,!0),Fe=(0,w.F)(P.C3,P.iw,!0),Ae=(0,w.F)(P.C3,P.GD,!0),Le=(0,w.F)(P.C3,P.bE,!0),Ie=(0,w.F)(P.C3,P.XM,!0);(0,o.useEffect)((function(){se&&(se&&(Ae?m.Z.invoke("GET","/api/v1/policy/".concat((0,L.LL)(ee))).then((function(e){if(e){N(e),re(e?JSON.stringify(JSON.parse(e.policy),null,4):"");var n=JSON.parse(e.policy);H(n.Statement)}ce(!1)})).catch((function(e){t((0,I.Ih)(e)),ce(!1)})):ce(!1)),xe&&(ke&&!Ne?m.Z.invoke("GET","/api/v1/policies/".concat((0,L.LL)(ee),"/users")).then((function(e){_(e),me(!1)})).catch((function(e){t((0,I.Ih)(e)),me(!1)})):me(!1)),Ce&&(Re&&!Ne?m.Z.invoke("GET","/api/v1/policies/".concat((0,L.LL)(ee),"/groups")).then((function(e){J(e),Ee(!1)})).catch((function(e){t((0,I.Ih)(e)),Ee(!1)})):Ee(!1)))}),[ee,se,xe,Ce,_,J,re,N,me,Ee,ke,Re,Ae,Ne,t]);var ze=""!==ee.trim(),Oe=[{type:"view",onClick:function(e){r("".concat(P.gA.USERS,"/").concat((0,L.LL)(e)))},disableButtonFunction:function(){return!Fe}}],Be=W.filter((function(e){return e.includes(ue)})),De=[{type:"view",onClick:function(e){r("".concat(P.gA.GROUPS,"/").concat((0,L.LL)(e)))},disableButtonFunction:function(){return!Te}}],He=Y.filter((function(e){return e.includes(be)})),Ge=function(){me(!0),Ee(!0),ce(!0)};return(0,T.jsxs)(o.Fragment,{children:[Se&&(0,T.jsx)(D,{deleteOpen:Se,selectedPolicy:ee,closeDeleteModalAndRefresh:function(e){Me(!1),r(P.gA.POLICIES)}}),(0,T.jsx)(v.Z,{label:(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(E.Z,{to:P.gA.POLICIES,label:"Policy"})})}),(0,T.jsxs)(y.Z,{className:n.pageContainer,children:[(0,T.jsx)(h.ZP,{item:!0,xs:12,children:(0,T.jsx)(g.Z,{icon:(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(c.v42,{width:40})}),title:ee,subTitle:(0,T.jsx)(o.Fragment,{children:"IAM Policy"}),actions:(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(w.s,{scopes:[P.Ft.ADMIN_DELETE_POLICY],resource:P.C3,errorProps:{disabled:!0},children:(0,T.jsx)(B.Z,{tooltip:Le?"":(0,P.MK)(P.bE,"delete Policies"),children:(0,T.jsx)(c.zxk,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,T.jsx)(c.XHJ,{}),onClick:function(){Me(!0)},disabled:!Le})})}),(0,T.jsx)(B.Z,{tooltip:"Refresh",children:(0,T.jsx)(c.zxk,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,T.jsx)(c.DuK,{}),onClick:function(){Ge()}})})]})})}),(0,T.jsxs)(C.Z,{children:[{tabConfig:{label:"Summary",disabled:!Ae},content:(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("div",{className:n.sectionTitle,children:"Policy Summary"}),(0,T.jsx)(p.Z,{className:n.paperContainer,children:(0,T.jsx)(A,{policyStatements:F})})]})},{tabConfig:{label:"Users",disabled:!ke||Ne},content:(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("div",{className:n.sectionTitle,children:"Users"}),(0,T.jsxs)(h.ZP,{container:!0,children:[W.length>0&&(0,T.jsx)(h.ZP,{item:!0,xs:12,className:n.actionsTray,children:(0,T.jsx)(j.Z,{placeholder:"Search Users",className:n.searchField,id:"search-resource",label:"",onChange:function(e){pe(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,T.jsx)(b.Z,{position:"start",children:(0,T.jsx)(c.W1M,{})})},variant:"standard"})}),(0,T.jsx)(x.Z,{itemActions:Oe,columns:[{label:"Name",elementKey:"name"}],isLoading:xe,records:Be,entityName:"Users with this Policy associated",idField:"name"})]})]})},{tabConfig:{label:"Groups",disabled:!Re||Ne},content:(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("div",{className:n.sectionTitle,children:"Groups"}),(0,T.jsxs)(h.ZP,{container:!0,children:[Y.length>0&&(0,T.jsx)(h.ZP,{item:!0,xs:12,className:n.actionsTray,children:(0,T.jsx)(j.Z,{placeholder:"Search Groups",className:n.searchField,id:"search-resource",label:"",onChange:function(e){je(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,T.jsx)(b.Z,{position:"start",children:(0,T.jsx)(c.W1M,{})})},variant:"standard"})}),(0,T.jsx)(x.Z,{itemActions:De,columns:[{label:"Name",elementKey:"name"}],isLoading:Ce,records:He,entityName:"Groups with this Policy associated",idField:"name"})]})]})},{tabConfig:{label:"Raw Policy",disabled:!Ae},content:(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("div",{className:n.sectionTitle,children:"Raw Policy"}),(0,T.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),X||($(!0),Ie?m.Z.invoke("POST","/api/v1/policies",{name:ee,policy:ie}).then((function(e){$(!1),t((0,I.y1)("Policy successfully updated")),Ge()})).catch((function(e){$(!1),t((0,I.Ih)(e))})):$(!1))},children:(0,T.jsxs)(h.ZP,{container:!0,children:[(0,T.jsx)(h.ZP,{item:!0,xs:12,children:(0,T.jsx)(Z.Z,{readOnly:!Ie,value:ie,onBeforeChange:function(e,n,t){re(t)},editorHeight:"350px"})}),(0,T.jsxs)(h.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[!M&&(0,T.jsx)("button",{type:"button",color:"primary",className:n.clearButton,onClick:function(){re("{}")},children:"Clear"}),(0,T.jsx)(w.s,{scopes:[P.Ft.ADMIN_CREATE_POLICY],resource:P.C3,errorProps:{disabled:!0},children:(0,T.jsx)(B.Z,{tooltip:Ie?"":(0,P.MK)(P.XM,"edit a Policy"),children:(0,T.jsx)(c.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:X||!ze||!Ie,label:"Save"})})})]}),X&&(0,T.jsx)(h.ZP,{item:!0,xs:12,children:(0,T.jsx)(f.Z,{})})]})})]})}]})]})]})}))},26759:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");n.Z=a},70366:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");n.Z=a},97911:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");n.Z=a},83449:function(e,n,t){"use strict";t.d(n,{ZP:function(){return s},_i:function(){return c},pQ:function(){return d},uU:function(){return l}});var i=t(29439),r=t(72791),o=t(80184),a=r.createContext(null);function s(e){var n=e.children,t=e.value,s=function(){var e=r.useState(null),n=(0,i.Z)(e,2),t=n[0],o=n[1];return r.useEffect((function(){o("mui-p-".concat(Math.round(1e5*Math.random())))}),[]),t}(),c=r.useMemo((function(){return{idPrefix:s,value:t}}),[s,t]);return(0,o.jsx)(a.Provider,{value:c,children:n})}function c(){return r.useContext(a)}function l(e,n){return null===e.idPrefix?null:"".concat(e.idPrefix,"-P-").concat(n)}function d(e,n){return null===e.idPrefix?null:"".concat(e.idPrefix,"-T-").concat(n)}},47283:function(e,n,t){"use strict";var i=t(87462),r=t(63366),o=t(72791),a=t(18073),s=t(83449),c=t(80184),l=["children"],d=o.forwardRef((function(e,n){var t=e.children,d=(0,r.Z)(e,l),u=(0,s._i)();if(null===u)throw new TypeError("No TabContext provided");var p=o.Children.map(t,(function(e){return o.isValidElement(e)?o.cloneElement(e,{"aria-controls":(0,s.uU)(u,e.props.value),id:(0,s.pQ)(u,e.props.value)}):null}));return(0,c.jsx)(a.Z,(0,i.Z)({},d,{ref:n,value:u.value,children:p}))}));n.Z=d},82851:function(e,n,t){"use strict";t.d(n,{Z:function(){return m}});var i=t(87462),r=t(63366),o=t(72791),a=t(28182),s=t(66934),c=t(31402),l=t(94419),d=t(21217);function u(e){return(0,d.Z)("MuiTabPanel",e)}(0,t(75878).Z)("MuiTabPanel",["root"]);var p=t(83449),h=t(80184),f=["children","className","value"],x=(0,s.ZP)("div",{name:"MuiTabPanel",slot:"Root",overridesResolver:function(e,n){return n.root}})((function(e){return{padding:e.theme.spacing(3)}})),m=o.forwardRef((function(e,n){var t=(0,c.Z)({props:e,name:"MuiTabPanel"}),o=t.children,s=t.className,d=t.value,m=(0,r.Z)(t,f),v=(0,i.Z)({},t),Z=function(e){var n=e.classes;return(0,l.Z)({root:["root"]},u,n)}(v),b=(0,p._i)();if(null===b)throw new TypeError("No TabContext provided");var j=(0,p.uU)(b,d),g=(0,p.pQ)(b,d);return(0,h.jsx)(x,(0,i.Z)({"aria-labelledby":g,className:(0,a.Z)(Z.root,s),hidden:d!==b.value,id:j,ref:n,role:"tabpanel",ownerState:v},m,{children:d===b.value&&o}))}))},94454:function(e,n,t){"use strict";t.d(n,{Z:function(){return M}});var i=t(4942),r=t(63366),o=t(87462),a=t(72791),s=t(28182),c=t(94419),l=t(12065),d=t(97278),u=t(76189),p=t(80184),h=(0,u.Z)((0,p.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),f=(0,u.Z)((0,p.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),x=(0,u.Z)((0,p.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),m=t(14036),v=t(31402),Z=t(66934),b=t(75878),j=t(21217);function g(e){return(0,j.Z)("MuiCheckbox",e)}var y=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),C=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],E=(0,Z.ZP)(d.Z,{shouldForwardProp:function(e){return(0,Z.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.indeterminate&&n.indeterminate,"default"!==t.color&&n["color".concat((0,m.Z)(t.color))]]}})((function(e){var n,t=e.theme,r=e.ownerState;return(0,o.Z)({color:(t.vars||t).palette.text.secondary},!r.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat("default"===r.color?t.vars.palette.action.activeChannel:t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===r.color?t.palette.action.active:t.palette[r.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==r.color&&(n={},(0,i.Z)(n,"&.".concat(y.checked,", &.").concat(y.indeterminate),{color:(t.vars||t).palette[r.color].main}),(0,i.Z)(n,"&.".concat(y.disabled),{color:(t.vars||t).palette.action.disabled}),n))})),P=(0,p.jsx)(f,{}),w=(0,p.jsx)(h,{}),S=(0,p.jsx)(x,{}),M=a.forwardRef((function(e,n){var t,i,l=(0,v.Z)({props:e,name:"MuiCheckbox"}),d=l.checkedIcon,u=void 0===d?P:d,h=l.color,f=void 0===h?"primary":h,x=l.icon,Z=void 0===x?w:x,b=l.indeterminate,j=void 0!==b&&b,y=l.indeterminateIcon,M=void 0===y?S:y,N=l.inputProps,R=l.size,T=void 0===R?"medium":R,k=l.className,F=(0,r.Z)(l,C),A=j?M:Z,L=j?M:u,I=(0,o.Z)({},l,{color:f,indeterminate:j,size:T}),z=function(e){var n=e.classes,t=e.indeterminate,i=e.color,r={root:["root",t&&"indeterminate","color".concat((0,m.Z)(i))]},a=(0,c.Z)(r,g,n);return(0,o.Z)({},n,a)}(I);return(0,p.jsx)(E,(0,o.Z)({type:"checkbox",inputProps:(0,o.Z)({"data-indeterminate":j},N),icon:a.cloneElement(A,{fontSize:null!=(t=A.props.fontSize)?t:T}),checkedIcon:a.cloneElement(L,{fontSize:null!=(i=L.props.fontSize)?i:T}),ownerState:I,ref:n,className:(0,s.Z)(z.root,k)},F,{classes:z}))}))},95193:function(e,n,t){"use strict";var i;t.d(n,{Z:function(){return p}});var r=t(29439),o=t(72791),a=t(69120),s=t(33073),c=t(40162);function l(e,n,t,i,a){var s="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,l=o.useState((function(){return a&&s?t(e).matches:i?i(e).matches:n})),d=(0,r.Z)(l,2),u=d[0],p=d[1];return(0,c.Z)((function(){var n=!0;if(s){var i=t(e),r=function(){n&&p(i.matches)};return r(),i.addListener(r),function(){n=!1,i.removeListener(r)}}}),[e,t,s]),u}var d=(i||(i=t.t(o,2))).useSyncExternalStore;function u(e,n,t,i){var a=o.useCallback((function(){return n}),[n]),s=o.useMemo((function(){if(null!==i){var n=i(e).matches;return function(){return n}}return a}),[a,e,i]),c=o.useMemo((function(){if(null===t)return[a,function(){return function(){}}];var n=t(e);return[function(){return n.matches},function(e){return n.addListener(e),function(){n.removeListener(e)}}]}),[a,t,e]),l=(0,r.Z)(c,2),u=l[0],p=l[1];return d(p,u,s)}function p(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=(0,a.Z)(),i="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,r=(0,s.Z)({name:"MuiUseMediaQuery",props:n,theme:t}),o=r.defaultMatches,c=void 0!==o&&o,p=r.matchMedia,h=void 0===p?i?window.matchMedia:null:p,f=r.ssrMatchMedia,x=void 0===f?null:f,m=r.noSsr;var v="function"===typeof e?e(t):e;v=v.replace(/^@media( ?)/m,"");var Z=void 0!==d?u:l,b=Z(v,c,h,x,m);return b}},26769:function(e,n,t){var i=t(39066),r=t(93629),o=t(43141);e.exports=function(e){return"string"==typeof e||!r(e)&&o(e)&&"[object String]"==i(e)}}}]);
+//# sourceMappingURL=1367.7ad56d1c.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1367.7ad56d1c.chunk.js.map b/portal-ui/build/static/js/1367.7ad56d1c.chunk.js.map
new file mode 100644
index 000000000..5baba84fc
--- /dev/null
+++ b/portal-ui/build/static/js/1367.7ad56d1c.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1367.7ad56d1c.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Common/VerticalTabs/VerticalTabs.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Policies/PolicyView.tsx","screens/Console/Policies/PolicyDetails.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/lab/TabContext/TabContext.js","../node_modules/@mui/lab/TabList/TabList.js","../node_modules/@mui/lab/TabPanel/tabPanelClasses.js","../node_modules/@mui/lab/TabPanel/TabPanel.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/lodash/isString.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"mds\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { SearchIcon } from \"mds\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\n","import React, { useState, useEffect } from \"react\";\nimport { Box, Tab, TabProps } from \"@mui/material\";\nimport { TabContext, TabList, TabPanel } from \"@mui/lab\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useLocation } from \"react-router-dom\";\n\nexport type TabItemProps = {\n tabConfig: TabProps | any;\n content?: JSX.Element | JSX.Element[];\n};\n\ntype VerticalTabsProps = {\n classes: any;\n children: TabItemProps[];\n selectedTab?: string;\n routes?: any;\n isRouteTabs?: boolean;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n tabsContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n },\n tabsHeaderContainer: {\n width: \"300px\",\n background: \"#F8F8F8\",\n borderRight: \"1px solid #EAEAEA\",\n \"& .MuiTabs-root\": {\n \"& .MuiTabs-indicator\": {\n display: \"none\",\n },\n \"& .MuiTab-root\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"& .MuiSvgIcon-root\": {\n marginRight: 8,\n marginBottom: 0,\n },\n \"&.Mui-selected\": {\n background: \"#E5E5E5\",\n fontWeight: 600,\n },\n },\n\n \"&. MuiTabs-scroller\": {\n display: \"none\",\n },\n },\n },\n tabContentContainer: {\n width: \"100%\",\n \"& .MuiTabPanel-root\": {\n height: \"100%\",\n },\n },\n tabPanel: {\n height: \"100%\",\n },\n /*Below md breakpoint make it horizontal and style it for scrolling tabs*/\n \"@media (max-width: 900px)\": {\n tabsContainer: {\n flexFlow: \"column\",\n flexDirection: \"column\",\n },\n tabsHeaderContainer: {\n width: \"100%\",\n borderBottom: \" 1px solid #EAEAEA\",\n \"& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root\": {\n borderBottom: \" 0px\",\n },\n },\n },\n });\n\nconst tabStripStyle = {\n minHeight: 60,\n};\n\nconst VerticalTabs = ({\n children,\n classes,\n selectedTab = \"0\",\n routes,\n isRouteTabs,\n}: VerticalTabsProps) => {\n const theme = useTheme();\n const { pathname = \"\" } = useLocation();\n\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [value, setValue] = useState(selectedTab);\n\n const headerList: TabProps[] = [];\n const contentList: React.ReactNode[] = [];\n\n useEffect(() => {\n if (isRouteTabs) {\n const tabConfigElement = children.find(\n (item) => item.tabConfig.to === pathname\n );\n\n if (tabConfigElement) {\n setValue(tabConfigElement.tabConfig.value);\n }\n }\n }, [isRouteTabs, children, pathname]);\n\n if (!children) return null;\n\n children.forEach((child) => {\n headerList.push(child.tabConfig);\n contentList.push(child.content);\n });\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n };\n\n return (\n \n \n \n \n {headerList.map((item, index) => {\n if (item) {\n return (\n \n );\n }\n return null;\n })}\n \n \n\n \n {!isRouteTabs\n ? contentList.map((item, index) => {\n return (\n \n {item ? item : null}\n \n );\n })\n : null}\n {isRouteTabs ? (\n {routes}
\n ) : null}\n \n \n \n );\n};\n\nexport default withStyles(styles)(VerticalTabs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#E7A219\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number\n) => {\n if (activeDisks <= totalDrives / 2) {\n return STATUS_COLORS.RED;\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeDisks === totalDrives) {\n return STATUS_COLORS.GREEN;\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"online\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return STATUS_COLORS.RED;\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeNetwork === networkTotal) {\n return STATUS_COLORS.GREEN;\n }\n};\n","// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { IAMStatement } from \"./types\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"../Common/FormComponents/common/styleLibrary\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { DisabledIcon, EnabledIcon } from \"mds\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n });\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"60px 1fr\",\n gap: \"15px\",\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n classes = {},\n}: {\n policyStatements: IAMStatement[];\n classes?: any;\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n Statements \n \n \n \n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect: \n \n {isAllow ? : }\n {effect}\n \n \n\n \n \n Actions: \n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n \n {act} \n
\n ))}\n \n \n \n Resources: \n \n {stmt.Resource &&\n stmt.Resource.map((res, resIndex) => (\n \n {\" \"}\n {res} \n
\n ))}\n \n \n \n \n );\n })}\n \n \n );\n};\n\nexport default withStyles(styles)(PolicyView);\n","// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IAMPolicy, IAMStatement, Policy } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n modalBasic,\n searchField,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport Paper from \"@mui/material/Paper\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../common/api\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField from \"@mui/material/TextField\";\nimport ScreenTitle from \"../Common/ScreenTitle/ScreenTitle\";\nimport { IAMPoliciesIcon, RefreshIcon, SearchIcon, TrashIcon } from \"mds\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport VerticalTabs from \"../Common/VerticalTabs/VerticalTabs\";\nimport BackLink from \"../../../common/BackLink\";\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n getGroupPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listGroupPermissions,\n listUsersPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport PolicyView from \"./PolicyView\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setSnackBarMessage } from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingTop: 16,\n \"& button\": {\n marginLeft: 8,\n },\n },\n pageContainer: {\n border: \"1px solid #EAEAEA\",\n height: \"100%\",\n },\n paperContainer: {\n padding: \"15px 15px 15px 50px\",\n minHeight: \"450px\",\n },\n statement: {\n border: \"1px solid #DADADA\",\n padding: 8,\n marginBottom: 8,\n borderRadius: 4,\n },\n labelCol: {\n fontWeight: \"bold\",\n },\n ...actionsTray,\n ...searchField,\n ...modalBasic,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IPolicyDetailsProps {\n classes: any;\n}\n\nconst PolicyDetails = ({ classes }: IPolicyDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const features = useSelector(selFeatures);\n\n const [policy, setPolicy] = useState(null);\n const [policyStatements, setPolicyStatements] = useState([]);\n const [userList, setUserList] = useState([]);\n const [groupList, setGroupList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n\n const policyName = decodeURLString(params.policyName || \"\");\n\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n const [loadingPolicy, setLoadingPolicy] = useState(true);\n const [filterUsers, setFilterUsers] = useState(\"\");\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [filterGroups, setFilterGroups] = useState(\"\");\n const [loadingGroups, setLoadingGroups] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n const ldapIsEnabled = (features && features.includes(\"ldap-idp\")) || false;\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n listGroupPermissions,\n true\n );\n\n const viewGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n true\n );\n\n const displayUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n true\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true\n );\n\n const displayPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true\n );\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n true\n );\n\n const canEditPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n true\n );\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (canEditPolicy) {\n api\n .invoke(\"POST\", \"/api/v1/policies\", {\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api\n .invoke(\n \"GET\",\n `/api/v1/policies/${encodeURLString(policyName)}/users`\n )\n .then((result: any) => {\n setUserList(result);\n setLoadingUsers(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n };\n\n const loadGroupsForPolicy = () => {\n if (loadingGroups) {\n if (displayGroups && !ldapIsEnabled) {\n api\n .invoke(\n \"GET\",\n `/api/v1/policies/${encodeURLString(policyName)}/groups`\n )\n .then((result: any) => {\n setGroupList(result);\n setLoadingGroups(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingGroups(false);\n });\n } else {\n setLoadingGroups(false);\n }\n }\n };\n const loadPolicyDetails = () => {\n if (loadingPolicy) {\n if (displayPolicy) {\n api\n .invoke(\"GET\", `/api/v1/policy/${encodeURLString(policyName)}`)\n .then((result: any) => {\n if (result) {\n setPolicy(result);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.policy), null, 4)\n : \"\"\n );\n const pol: IAMPolicy = JSON.parse(result.policy);\n setPolicyStatements(pol.Statement);\n }\n setLoadingPolicy(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingPolicy(false);\n });\n } else {\n setLoadingPolicy(false);\n }\n }\n };\n\n if (loadingPolicy) {\n loadPolicyDetails();\n loadUsersForPolicy();\n loadGroupsForPolicy();\n }\n }, [\n policyName,\n loadingPolicy,\n loadingUsers,\n loadingGroups,\n setUserList,\n setGroupList,\n setPolicyDefinition,\n setPolicy,\n setLoadingUsers,\n setLoadingGroups,\n displayUsers,\n displayGroups,\n displayPolicy,\n ldapIsEnabled,\n dispatch,\n ]);\n\n const resetForm = () => {\n setPolicyDefinition(\"{}\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n const deletePolicy = () => {\n setDeleteOpen(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n navigate(IAM_PAGES.POLICIES);\n };\n\n const userViewAction = (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n };\n const userTableActions = [\n {\n type: \"view\",\n onClick: userViewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n const filteredUsers = userList.filter((elementItem) =>\n elementItem.includes(filterUsers)\n );\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n const filteredGroups = groupList.filter((elementItem) =>\n elementItem.includes(filterGroups)\n );\n\n const refreshPolicyDetails = () => {\n setLoadingUsers(true);\n setLoadingGroups(true);\n setLoadingPolicy(true);\n };\n\n return (\n \n {deleteOpen && (\n \n )}\n \n \n \n }\n />\n\n \n \n \n \n \n }\n title={policyName}\n subTitle={IAM Policy }\n actions={\n \n \n \n }\n onClick={deletePolicy}\n disabled={!canDeletePolicy}\n />\n \n \n\n \n }\n onClick={() => {\n refreshPolicyDetails();\n }}\n />\n \n \n }\n />\n \n\n \n {{\n tabConfig: { label: \"Summary\", disabled: !displayPolicy },\n content: (\n \n Policy Summary
\n \n \n \n \n ),\n }}\n {{\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n },\n content: (\n \n Users
\n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n \n )}\n \n \n \n ),\n }}\n {{\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n },\n content: (\n \n Groups
\n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n \n )}\n \n \n \n ),\n }}\n {{\n tabConfig: { label: \"Raw Policy\", disabled: !displayPolicy },\n content: (\n \n Raw Policy
\n \n \n ),\n }}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PolicyDetails);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * @type {React.Context<{ idPrefix: string; value: string } | null>}\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Context = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n Context.displayName = 'TabContext';\n}\nfunction useUniquePrefix() {\n const [id, setId] = React.useState(null);\n React.useEffect(() => {\n setId(`mui-p-${Math.round(Math.random() * 1e5)}`);\n }, []);\n return id;\n}\nexport default function TabContext(props) {\n const {\n children,\n value\n } = props;\n const idPrefix = useUniquePrefix();\n const context = React.useMemo(() => {\n return {\n idPrefix,\n value\n };\n }, [idPrefix, value]);\n return /*#__PURE__*/_jsx(Context.Provider, {\n value: context,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? TabContext.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 value of the currently selected `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\n\n/**\n * @returns {unknown}\n */\nexport function useTabContext() {\n return React.useContext(Context);\n}\nexport function getPanelId(context, value) {\n const {\n idPrefix\n } = context;\n if (idPrefix === null) {\n return null;\n }\n return `${context.idPrefix}-P-${value}`;\n}\nexport function getTabId(context, value) {\n const {\n idPrefix\n } = context;\n if (idPrefix === null) {\n return null;\n }\n return `${context.idPrefix}-T-${value}`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@mui/material/Tabs';\nimport { useTabContext, getTabId, getPanelId } from '../TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabList = /*#__PURE__*/React.forwardRef(function TabList(props, ref) {\n const {\n children: childrenProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = useTabContext();\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n // SOMEDAY: `Tabs` will set those themselves\n 'aria-controls': getPanelId(context, child.props.value),\n id: getTabId(context, child.props.value)\n });\n });\n return /*#__PURE__*/_jsx(Tabs, _extends({}, other, {\n ref: ref,\n value: context.value,\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabList.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 * A list of ` ` elements.\n */\n children: PropTypes.node\n} : void 0;\nexport default TabList;","import generateUtilityClass from '@mui/material/generateUtilityClass';\nimport generateUtilityClasses from '@mui/material/generateUtilityClasses';\nexport function getTabPanelUtilityClass(slot) {\n return generateUtilityClass('MuiTabPanel', slot);\n}\nconst tabPanelClasses = generateUtilityClasses('MuiTabPanel', ['root']);\nexport default tabPanelClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { getTabPanelUtilityClass } from './tabPanelClasses';\nimport { getPanelId, getTabId, useTabContext } from '../TabContext';\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, getTabPanelUtilityClass, classes);\n};\nconst TabPanelRoot = styled('div', {\n name: 'MuiTabPanel',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(3)\n}));\nconst TabPanel = /*#__PURE__*/React.forwardRef(function TabPanel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabPanel'\n });\n const {\n children,\n className,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props);\n const classes = useUtilityClasses(ownerState);\n const context = useTabContext();\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n const id = getPanelId(context, value);\n const tabId = getTabId(context, value);\n return /*#__PURE__*/_jsx(TabPanelRoot, _extends({\n \"aria-labelledby\": tabId,\n className: clsx(classes.root, className),\n hidden: value !== context.value,\n id: id,\n ref: ref,\n role: \"tabpanel\",\n ownerState: ownerState\n }, other, {\n children: value === context.value && children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabPanel.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 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 corresponding `Tab`. Must use the index of the `Tab` when\n * no `value` was passed to `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\nexport default TabPanel;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","import * as React from 'react';\nimport { getThemeProps, useThemeWithoutDefault as useTheme } from '@mui/system';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const [match, setMatch] = React.useState(() => {\n if (noSsr && supportMatchMedia) {\n return matchMedia(query).matches;\n }\n if (ssrMatchMedia) {\n return ssrMatchMedia(query).matches;\n }\n\n // Once the component is mounted, we rely on the\n // event listeners to return the correct matches value.\n return defaultMatches;\n });\n useEnhancedEffect(() => {\n let active = true;\n if (!supportMatchMedia) {\n return undefined;\n }\n const queryList = matchMedia(query);\n const updateMatch = () => {\n // Workaround Safari wrong implementation of matchMedia\n // TODO can we remove it?\n // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n if (active) {\n setMatch(queryList.matches);\n }\n };\n updateMatch();\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n queryList.addListener(updateMatch);\n return () => {\n active = false;\n queryList.removeListener(updateMatch);\n };\n }, [query, matchMedia, supportMatchMedia]);\n return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia]);\n const [getSnapshot, subscribe] = React.useMemo(() => {\n if (matchMedia === null) {\n return [getDefaultSnapshot, () => () => {}];\n }\n const mediaQueryList = matchMedia(query);\n return [() => mediaQueryList.matches, notify => {\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n mediaQueryList.addListener(notify);\n return () => {\n mediaQueryList.removeListener(notify);\n };\n }];\n }, [getDefaultSnapshot, matchMedia, query]);\n const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n const theme = useTheme();\n // Wait for jsdom to support the match media feature.\n // All the browsers MUI support have this built-in.\n // This defensive check is here for simplicity.\n // Most of the time, the match media logic isn't central to people tests.\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const {\n defaultMatches = false,\n matchMedia = supportMatchMedia ? window.matchMedia : null,\n ssrMatchMedia = null,\n noSsr\n } = getThemeProps({\n name: 'MuiUseMediaQuery',\n props: options,\n theme\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof queryInput === 'function' && theme === null) {\n console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n query = query.replace(/^@media( ?)/m, '');\n\n // TODO: Drop `useMediaQueryOld` and use `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue({\n query,\n match\n });\n }\n return match;\n}","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["withStyles","theme","createStyles","fieldBasic","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","item","xs","sx","marginBottom","className","inputLabel","tooltipContainer","title","placement","style","maxHeight","overflow","border","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","text","type","icon","variant","searchField","adornment","placeholder","adornmentPosition","overrideClass","inputProps","disableUnderline","position","InputProps","e","tabStripStyle","tabsContainer","tabsHeaderContainer","borderRight","flexFlow","borderBottom","marginRight","fontWeight","tabContentContainer","tabPanel","flexDirection","children","selectedTab","routes","isRouteTabs","useTheme","useLocation","pathname","isSmallScreen","useMediaQuery","breakpoints","down","useState","setValue","headerList","contentList","useEffect","tabConfigElement","find","tabConfig","to","forEach","child","push","content","event","newValue","orientation","scrollButtons","tabList","map","index","tabHeader","disableRipple","disableTouchRipple","focusRipple","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","gridTemplateColumns","gap","Highlight","search","txtParts","RegExp","str","replace","escapeRegExp","parts","String","split","part","test","maxWidth","policyStatements","filter","setFilter","Grid","container","Box","sm","SearchBox","paddingTop","stmt","i","effect","Effect","isAllow","fill","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","buttonContainer","pageContainer","paperContainer","statement","borderRadius","labelCol","actionsTray","modalBasic","containerForHeader","spacing","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","setPolicyStatements","userList","setUserList","groupList","setGroupList","addLoading","setAddLoading","policyName","decodeURLString","policyDefinition","setPolicyDefinition","loadingPolicy","setLoadingPolicy","filterUsers","setFilterUsers","loadingUsers","setLoadingUsers","filterGroups","setFilterGroups","loadingGroups","setLoadingGroups","deleteOpen","setDeleteOpen","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","api","encodeURLString","then","result","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","validSave","trim","userTableActions","onClick","user","IAM_PAGES","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","filteredGroups","refreshPolicyDetails","Fragment","selectedPolicy","closeDeleteModalAndRefresh","refresh","PageHeader","BackLink","PageLayout","ScreenTitle","subTitle","actions","SecureComponent","scopes","IAM_SCOPES","resource","errorProps","disabled","TooltipWrapper","permissionTooltipHelper","VerticalTabs","sectionTitle","Paper","length","TextField","val","startAdornment","InputAdornment","TableWrapper","itemActions","columns","elementKey","isLoading","records","entityName","idField","noValidate","autoComplete","onSubmit","preventDefault","name","_","setSnackBarMessage","CodeMirrorWrapper","editor","data","clearButton","LinearProgress","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Context","TabContext","props","idPrefix","setId","Math","round","random","useUniquePrefix","context","_jsx","Provider","useTabContext","getPanelId","getTabId","_excluded","TabList","ref","childrenProp","other","_objectWithoutPropertiesLoose","TypeError","Tabs","_extends","getTabPanelUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TabPanelRoot","styled","overridesResolver","styles","root","inProps","useThemeProps","ownerState","composeClasses","useUtilityClasses","tabId","clsx","hidden","role","createSvgIcon","getCheckboxUtilityClass","CheckboxRoot","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","indeterminate","capitalize","vars","palette","secondary","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","_icon$props$fontSize","_indeterminateIcon$pr","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","size","slots","composedClasses","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","supportMatchMedia","window","matches","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","mediaQueryList","notify","getSnapshot","subscribe","queryInput","options","getThemeProps","useMediaQueryImplementation","undefined","baseGetTag","isArray","isObjectLike","module"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1367.e7a5805d.chunk.js b/portal-ui/build/static/js/1367.e7a5805d.chunk.js
deleted file mode 100644
index 2e86839a6..000000000
--- a/portal-ui/build/static/js/1367.e7a5805d.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1367,2691],{92217:function(e,n,t){"use strict";var i=t(1413),r=t(72791),o=t(61889),a=t(30829),s=t(20068),c=t(64554),l=t(11135),d=t(25787),u=t(84570),p=t(23814),h=t(56096),f=t(75952),x=t(78029),m=t.n(x),v=t(90932),Z=t(27454),b=t(80184);n.Z=(0,d.Z)((function(e){return(0,l.Z)((0,i.Z)({},p.YI))}))((function(e){var n=e.value,t=e.label,i=void 0===t?"":t,l=e.tooltip,d=void 0===l?"":l,p=e.mode,x=void 0===p?"json":p,j=e.classes,g=e.onBeforeChange,C=(e.readOnly,e.editorHeight),y=void 0===C?"250px":C;return(0,b.jsxs)(r.Fragment,{children:[(0,b.jsx)(o.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,b.jsxs)(a.Z,{className:j.inputLabel,children:[(0,b.jsx)("span",{children:i}),""!==d&&(0,b.jsx)("div",{className:j.tooltipContainer,children:(0,b.jsx)(s.Z,{title:d,placement:"top-start",children:(0,b.jsx)("div",{className:j.tooltip,children:(0,b.jsx)(u.Z,{})})})})]})}),(0,b.jsx)(o.ZP,{item:!0,xs:12,style:{maxHeight:y,overflow:"auto",border:"1px solid #eaeaea"},children:(0,b.jsx)(v.Z,{value:n,language:x,onChange:function(e){g(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:y||"initial",color:"#000000"}})}),(0,b.jsx)(o.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,b.jsx)(c.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,b.jsx)(Z.Z,{tooltip:"Copy to Clipboard",children:(0,b.jsx)(m(),{text:n,children:(0,b.jsx)(f.zx,{type:"button",id:"copy-code-mirror",icon:(0,b.jsx)(h.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},59114:function(e,n,t){"use strict";var i=t(4942),r=t(1413),o=(t(72791),t(63466)),a=t(74900),s=t(27391),c=t(25787),l=t(11135),d=t(23814),u=t(80184);n.Z=(0,c.Z)((function(e){return(0,l.Z)({searchField:(0,r.Z)({},d.qg.searchField),adornment:{}})}))((function(e){var n=e.placeholder,t=void 0===n?"":n,r=e.classes,c=e.onChange,l=e.adornmentPosition,d=void 0===l?"end":l,p=e.overrideClass,h=e.value,f=(0,i.Z)({disableUnderline:!0},"".concat(d,"Adornment"),(0,u.jsx)(o.Z,{position:d,className:r.adornment,children:(0,u.jsx)(a.Z,{})}));return(0,u.jsx)(s.Z,{placeholder:t,className:p||r.searchField,id:"search-resource",label:"",InputProps:f,onChange:function(e){c(e.target.value)},variant:"standard",value:h})}))},50276:function(e,n,t){"use strict";var i=t(1413),r=t(29439),o=t(72791),a=t(64554),s=t(43896),c=t(83449),l=t(47283),d=t(82851),u=t(25787),p=t(13967),h=t(11135),f=t(95193),x=t(57689),m=t(80184),v={minHeight:60};n.Z=(0,u.Z)((function(e){return(0,h.Z)({tabsContainer:{display:"flex",height:"100%",width:"100%"},tabsHeaderContainer:{width:"300px",background:"#F8F8F8",borderRight:"1px solid #EAEAEA","& .MuiTabs-root":{"& .MuiTabs-indicator":{display:"none"},"& .MuiTab-root":{display:"flex",flexFlow:"row",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","& .MuiSvgIcon-root":{marginRight:8,marginBottom:0},"&.Mui-selected":{background:"#E5E5E5",fontWeight:600}},"&. MuiTabs-scroller":{display:"none"}}},tabContentContainer:{width:"100%","& .MuiTabPanel-root":{height:"100%"}},tabPanel:{height:"100%"},"@media (max-width: 900px)":{tabsContainer:{flexFlow:"column",flexDirection:"column"},tabsHeaderContainer:{width:"100%",borderBottom:" 1px solid #EAEAEA","& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root":{borderBottom:" 0px"}}}})}))((function(e){var n=e.children,t=e.classes,u=e.selectedTab,h=void 0===u?"0":u,Z=e.routes,b=e.isRouteTabs,j=(0,p.Z)(),g=(0,x.TH)().pathname,C=void 0===g?"":g,y=(0,f.Z)(j.breakpoints.down("md")),E=(0,o.useState)(h),P=(0,r.Z)(E,2),w=P[0],S=P[1],N=[],M=[];if((0,o.useEffect)((function(){if(b){var e=n.find((function(e){return e.tabConfig.to===C}));e&&S(e.tabConfig.value)}}),[b,n,C]),!n)return null;n.forEach((function(e){N.push(e.tabConfig),M.push(e.content)}));return(0,m.jsx)(c.ZP,{value:"".concat(w),children:(0,m.jsxs)(a.Z,{className:t.tabsContainer,children:[(0,m.jsx)(a.Z,{className:t.tabsHeaderContainer,children:(0,m.jsx)(l.Z,{onChange:function(e,n){S(n)},orientation:y?"horizontal":"vertical",variant:y?"scrollable":"standard",scrollButtons:"auto",className:t.tabList,children:N.map((function(e,n){return e?(0,m.jsx)(s.Z,(0,i.Z)((0,i.Z)({className:t.tabHeader,value:"".concat(n),style:v},e),{},{disableRipple:!0,disableTouchRipple:!0,focusRipple:!0}),"v-tab-".concat(n)):null}))})}),(0,m.jsxs)(a.Z,{className:t.tabContentContainer,children:[b?null:M.map((function(e,n){return(0,m.jsx)(d.Z,{classes:(0,i.Z)({},t.tabPanel),value:"".concat(n),children:e||null},"v-tab-p-".concat(n))})),b?(0,m.jsx)("div",{className:t.tabPanel,children:Z}):null]})]})})}))},879:function(e,n,t){"use strict";t.d(n,{D_:function(){return a},Et:function(){return r},GJ:function(){return o},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#E7A219"},r=function(e,n){return e<=n/2?i.RED:2!==n&&e===n/2+1?i.YELLOW:e===n?i.GREEN:void 0},o=function(e){switch(e){case"offline":return i.RED;case"online":return i.GREEN;default:return i.YELLOW}},a=function(e,n){return e<=n/2?i.RED:e===n/2+1?i.YELLOW:e===n?i.GREEN:void 0}},1191:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return W}});var i=t(29439),r=t(1413),o=t(72791),a=t(78687),s=t(57689),c=t(75952),l=t(11135),d=t(25787),u=t(23814),p=t(35527),h=t(61889),f=t(40986),x=t(92983),m=t(81207),v=t(32291),Z=t(92217),b=t(63466),j=t(27391),g=t(14917),C=t(64244),y=t(28789),E=t(74900),P=t(54599),w=t(74794),S=t(50276),N=t(84669),M=t(56087),R=t(38442),T=t(75578),F=t(64554),k=t(59114),A=t(56096),L=t(879),I=t(80184),z={display:"grid",gridTemplateColumns:"60px 1fr",gap:"15px"},O=function(e){var n=e.search,t=void 0===n?"":n,i=e.children,r=void 0===i?"":i,o=new RegExp("(".concat(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(t),")"),"i"),a=String(r).split(o);return t?a.map((function(e,n){return o.test(e)?(0,I.jsx)("mark",{children:e},n):e})):r},B=(0,d.Z)((function(e){return(0,l.Z)({searchField:(0,r.Z)((0,r.Z)({},u.qg.searchField),{},{maxWidth:380})})}))((function(e){var n=e.policyStatements,t=e.classes,r=void 0===t?{}:t,a=(0,o.useState)(""),s=(0,i.Z)(a,2),c=s[0],l=s[1];return(0,I.jsxs)(h.ZP,{container:!0,children:[(0,I.jsx)(h.ZP,{item:!0,xs:12,children:(0,I.jsxs)(F.Z,{sx:{display:"grid",gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},alignItems:"center",justifyContent:"space-between",gap:"15px"},children:[(0,I.jsx)(F.Z,{children:"Statements"}),(0,I.jsx)(k.Z,{placeholder:"Search",onChange:l,overrideClass:r.searchField,value:c})]})}),(0,I.jsx)(h.ZP,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:n.map((function(e,n){var t=e.Effect,i="Allow"===t;return(0,I.jsxs)(F.Z,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,I.jsxs)(F.Z,{sx:z,children:[(0,I.jsx)(F.Z,{className:"label",children:"Effect:"}),(0,I.jsxs)(F.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:i?L.yh.GREEN:L.yh.RED,height:"14px",width:"14px"}},children:[i?(0,I.jsx)(A.E31,{}):(0,I.jsx)(A.dRf,{}),t]})]}),(0,I.jsxs)(F.Z,{sx:{display:"grid",gridTemplateColumns:{sm:"1fr 1fr",xs:"1fr"},gap:"15px"},children:[(0,I.jsxs)(F.Z,{sx:z,children:[(0,I.jsx)(F.Z,{className:"label",children:"Actions:"}),(0,I.jsx)(F.Z,{children:e.Action&&e.Action.map((function(e,t){return(0,I.jsx)("div",{children:(0,I.jsx)(O,{search:c,children:e})},"".concat(n,"-r-").concat(t))}))})]}),(0,I.jsxs)(F.Z,{sx:z,children:[(0,I.jsx)(F.Z,{className:"label",children:"Resources:"}),(0,I.jsx)(F.Z,{children:e.Resource&&e.Resource.map((function(e,t){return(0,I.jsxs)("div",{children:[" ",(0,I.jsx)(O,{search:c,children:e})]},"".concat(n,"-r-").concat(t))}))})]})]})]},"".concat(n))}))})]})})),D=t(45248),H=t(87995),G=t(46078),U=t(25469),_=t(27454),V=(0,T.Z)(o.lazy((function(){return t.e(312).then(t.bind(t,312))}))),W=(0,d.Z)((function(e){return(0,l.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({buttonContainer:{display:"flex",justifyContent:"flex-end",paddingTop:16,"& button":{marginLeft:8}},pageContainer:{border:"1px solid #EAEAEA",height:"100%"},paperContainer:{padding:"15px 15px 15px 50px",minHeight:"450px"},statement:{border:"1px solid #DADADA",padding:8,marginBottom:8,borderRadius:4},labelCol:{fontWeight:"bold"}},u.OR),u.qg),u.oO),(0,u.Bz)(e.spacing(4))))}))((function(e){var n=e.classes,t=(0,U.TL)(),r=(0,s.s0)(),l=(0,s.UO)(),d=(0,a.v9)(G.$4),u=(0,o.useState)(null),T=(0,i.Z)(u,2),F=T[0],k=T[1],A=(0,o.useState)([]),L=(0,i.Z)(A,2),z=L[0],O=L[1],W=(0,o.useState)([]),Y=(0,i.Z)(W,2),K=Y[0],q=Y[1],J=(0,o.useState)([]),Q=(0,i.Z)(J,2),$=Q[0],X=Q[1],ee=(0,o.useState)(!1),ne=(0,i.Z)(ee,2),te=ne[0],ie=ne[1],re=(0,D.IO)(l.policyName||""),oe=(0,o.useState)(""),ae=(0,i.Z)(oe,2),se=ae[0],ce=ae[1],le=(0,o.useState)(!0),de=(0,i.Z)(le,2),ue=de[0],pe=de[1],he=(0,o.useState)(""),fe=(0,i.Z)(he,2),xe=fe[0],me=fe[1],ve=(0,o.useState)(!0),Ze=(0,i.Z)(ve,2),be=Ze[0],je=Ze[1],ge=(0,o.useState)(""),Ce=(0,i.Z)(ge,2),ye=Ce[0],Ee=Ce[1],Pe=(0,o.useState)(!0),we=(0,i.Z)(Pe,2),Se=we[0],Ne=we[1],Me=(0,o.useState)(!1),Re=(0,i.Z)(Me,2),Te=Re[0],Fe=Re[1],ke=d&&d.includes("ldap-idp")||!1,Ae=(0,R.F)(M.C3,M.K6,!0),Le=(0,R.F)(M.C3,M.k_,!0),Ie=(0,R.F)(M.C3,M.Rs,!0),ze=(0,R.F)(M.C3,M.iw,!0),Oe=(0,R.F)(M.C3,M.GD,!0),Be=(0,R.F)(M.C3,M.bE,!0),De=(0,R.F)(M.C3,M.XM,!0);(0,o.useEffect)((function(){ue&&(ue&&(Oe?m.Z.invoke("GET","/api/v1/policy/".concat((0,D.LL)(re))).then((function(e){if(e){k(e),ce(e?JSON.stringify(JSON.parse(e.policy),null,4):"");var n=JSON.parse(e.policy);O(n.Statement)}pe(!1)})).catch((function(e){t((0,H.Ih)(e)),pe(!1)})):pe(!1)),be&&(Ie&&!ke?m.Z.invoke("GET","/api/v1/policies/".concat((0,D.LL)(re),"/users")).then((function(e){q(e),je(!1)})).catch((function(e){t((0,H.Ih)(e)),je(!1)})):je(!1)),Se&&(Ae&&!ke?m.Z.invoke("GET","/api/v1/policies/".concat((0,D.LL)(re),"/groups")).then((function(e){X(e),Ne(!1)})).catch((function(e){t((0,H.Ih)(e)),Ne(!1)})):Ne(!1)))}),[re,ue,be,Se,q,X,ce,k,je,Ne,Ie,Ae,Oe,ke,t]);var He=""!==re.trim(),Ge=[{type:"view",onClick:function(e){r("".concat(M.gA.USERS,"/").concat((0,D.LL)(e)))},disableButtonFunction:function(){return!ze}}],Ue=K.filter((function(e){return e.includes(xe)})),_e=[{type:"view",onClick:function(e){r("".concat(M.gA.GROUPS,"/").concat((0,D.LL)(e)))},disableButtonFunction:function(){return!Le}}],Ve=$.filter((function(e){return e.includes(ye)})),We=function(){je(!0),Ne(!0),pe(!0)};return(0,I.jsxs)(o.Fragment,{children:[Te&&(0,I.jsx)(V,{deleteOpen:Te,selectedPolicy:re,closeDeleteModalAndRefresh:function(e){Fe(!1),r(M.gA.POLICIES)}}),(0,I.jsx)(v.Z,{label:(0,I.jsx)(o.Fragment,{children:(0,I.jsx)(N.Z,{to:M.gA.POLICIES,label:"Policy"})})}),(0,I.jsxs)(w.Z,{className:n.pageContainer,children:[(0,I.jsx)(h.ZP,{item:!0,xs:12,children:(0,I.jsx)(g.Z,{icon:(0,I.jsx)(o.Fragment,{children:(0,I.jsx)(C.Z,{width:40})}),title:re,subTitle:(0,I.jsx)(o.Fragment,{children:"IAM Policy"}),actions:(0,I.jsxs)(o.Fragment,{children:[(0,I.jsx)(R.s,{scopes:[M.Ft.ADMIN_DELETE_POLICY],resource:M.C3,errorProps:{disabled:!0},children:(0,I.jsx)(_.Z,{tooltip:Be?"":(0,M.MK)(M.bE,"delete Policies"),children:(0,I.jsx)(c.zx,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,I.jsx)(P.Z,{}),onClick:function(){Fe(!0)},disabled:!Be})})}),(0,I.jsx)(_.Z,{tooltip:"Refresh",children:(0,I.jsx)(c.zx,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,I.jsx)(y.default,{}),onClick:function(){We()}})})]})})}),(0,I.jsxs)(S.Z,{children:[{tabConfig:{label:"Summary",disabled:!Oe},content:(0,I.jsxs)(o.Fragment,{children:[(0,I.jsx)("div",{className:n.sectionTitle,children:"Policy Summary"}),(0,I.jsx)(p.Z,{className:n.paperContainer,children:(0,I.jsx)(B,{policyStatements:z})})]})},{tabConfig:{label:"Users",disabled:!Ie||ke},content:(0,I.jsxs)(o.Fragment,{children:[(0,I.jsx)("div",{className:n.sectionTitle,children:"Users"}),(0,I.jsxs)(h.ZP,{container:!0,children:[K.length>0&&(0,I.jsx)(h.ZP,{item:!0,xs:12,className:n.actionsTray,children:(0,I.jsx)(j.Z,{placeholder:"Search Users",className:n.searchField,id:"search-resource",label:"",onChange:function(e){me(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,I.jsx)(b.Z,{position:"start",children:(0,I.jsx)(E.Z,{})})},variant:"standard"})}),(0,I.jsx)(x.Z,{itemActions:Ge,columns:[{label:"Name",elementKey:"name"}],isLoading:be,records:Ue,entityName:"Users with this Policy associated",idField:"name"})]})]})},{tabConfig:{label:"Groups",disabled:!Ae||ke},content:(0,I.jsxs)(o.Fragment,{children:[(0,I.jsx)("div",{className:n.sectionTitle,children:"Groups"}),(0,I.jsxs)(h.ZP,{container:!0,children:[$.length>0&&(0,I.jsx)(h.ZP,{item:!0,xs:12,className:n.actionsTray,children:(0,I.jsx)(j.Z,{placeholder:"Search Groups",className:n.searchField,id:"search-resource",label:"",onChange:function(e){Ee(e.target.value)},InputProps:{disableUnderline:!0,startAdornment:(0,I.jsx)(b.Z,{position:"start",children:(0,I.jsx)(E.Z,{})})},variant:"standard"})}),(0,I.jsx)(x.Z,{itemActions:_e,columns:[{label:"Name",elementKey:"name"}],isLoading:Se,records:Ve,entityName:"Groups with this Policy associated",idField:"name"})]})]})},{tabConfig:{label:"Raw Policy",disabled:!Oe},content:(0,I.jsxs)(o.Fragment,{children:[(0,I.jsx)("div",{className:n.sectionTitle,children:"Raw Policy"}),(0,I.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),te||(ie(!0),De?m.Z.invoke("POST","/api/v1/policies",{name:re,policy:se}).then((function(e){ie(!1),t((0,H.y1)("Policy successfully updated")),We()})).catch((function(e){ie(!1),t((0,H.Ih)(e))})):ie(!1))},children:(0,I.jsxs)(h.ZP,{container:!0,children:[(0,I.jsx)(h.ZP,{item:!0,xs:12,children:(0,I.jsx)(Z.Z,{readOnly:!De,value:se,onBeforeChange:function(e,n,t){ce(t)},editorHeight:"350px"})}),(0,I.jsxs)(h.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[!F&&(0,I.jsx)("button",{type:"button",color:"primary",className:n.clearButton,onClick:function(){ce("{}")},children:"Clear"}),(0,I.jsx)(R.s,{scopes:[M.Ft.ADMIN_CREATE_POLICY],resource:M.C3,errorProps:{disabled:!0},children:(0,I.jsx)(_.Z,{tooltip:De?"":(0,M.MK)(M.XM,"edit a Policy"),children:(0,I.jsx)(c.zx,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:te||!He||!De,label:"Save"})})})]}),te&&(0,I.jsx)(h.ZP,{item:!0,xs:12,children:(0,I.jsx)(f.Z,{})})]})})]})}]})]})]})}))},26759:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");n.Z=a},70366:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");n.Z=a},97911:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var r=i(t(45649)),o=t(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");n.Z=a},83449:function(e,n,t){"use strict";t.d(n,{ZP:function(){return s},_i:function(){return c},pQ:function(){return d},uU:function(){return l}});var i=t(29439),r=t(72791),o=t(80184),a=r.createContext(null);function s(e){var n=e.children,t=e.value,s=function(){var e=r.useState(null),n=(0,i.Z)(e,2),t=n[0],o=n[1];return r.useEffect((function(){o("mui-p-".concat(Math.round(1e5*Math.random())))}),[]),t}(),c=r.useMemo((function(){return{idPrefix:s,value:t}}),[s,t]);return(0,o.jsx)(a.Provider,{value:c,children:n})}function c(){return r.useContext(a)}function l(e,n){return null===e.idPrefix?null:"".concat(e.idPrefix,"-P-").concat(n)}function d(e,n){return null===e.idPrefix?null:"".concat(e.idPrefix,"-T-").concat(n)}},47283:function(e,n,t){"use strict";var i=t(87462),r=t(63366),o=t(72791),a=t(18073),s=t(83449),c=t(80184),l=["children"],d=o.forwardRef((function(e,n){var t=e.children,d=(0,r.Z)(e,l),u=(0,s._i)();if(null===u)throw new TypeError("No TabContext provided");var p=o.Children.map(t,(function(e){return o.isValidElement(e)?o.cloneElement(e,{"aria-controls":(0,s.uU)(u,e.props.value),id:(0,s.pQ)(u,e.props.value)}):null}));return(0,c.jsx)(a.Z,(0,i.Z)({},d,{ref:n,value:u.value,children:p}))}));n.Z=d},82851:function(e,n,t){"use strict";t.d(n,{Z:function(){return m}});var i=t(87462),r=t(63366),o=t(72791),a=t(28182),s=t(66934),c=t(31402),l=t(94419),d=t(21217);function u(e){return(0,d.Z)("MuiTabPanel",e)}(0,t(75878).Z)("MuiTabPanel",["root"]);var p=t(83449),h=t(80184),f=["children","className","value"],x=(0,s.ZP)("div",{name:"MuiTabPanel",slot:"Root",overridesResolver:function(e,n){return n.root}})((function(e){return{padding:e.theme.spacing(3)}})),m=o.forwardRef((function(e,n){var t=(0,c.Z)({props:e,name:"MuiTabPanel"}),o=t.children,s=t.className,d=t.value,m=(0,r.Z)(t,f),v=(0,i.Z)({},t),Z=function(e){var n=e.classes;return(0,l.Z)({root:["root"]},u,n)}(v),b=(0,p._i)();if(null===b)throw new TypeError("No TabContext provided");var j=(0,p.uU)(b,d),g=(0,p.pQ)(b,d);return(0,h.jsx)(x,(0,i.Z)({"aria-labelledby":g,className:(0,a.Z)(Z.root,s),hidden:d!==b.value,id:j,ref:n,role:"tabpanel",ownerState:v},m,{children:d===b.value&&o}))}))},94454:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var i=t(4942),r=t(63366),o=t(87462),a=t(72791),s=t(28182),c=t(94419),l=t(12065),d=t(97278),u=t(76189),p=t(80184),h=(0,u.Z)((0,p.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),f=(0,u.Z)((0,p.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),x=(0,u.Z)((0,p.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),m=t(14036),v=t(31402),Z=t(66934),b=t(75878),j=t(21217);function g(e){return(0,j.Z)("MuiCheckbox",e)}var C=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),y=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],E=(0,Z.ZP)(d.Z,{shouldForwardProp:function(e){return(0,Z.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.indeterminate&&n.indeterminate,"default"!==t.color&&n["color".concat((0,m.Z)(t.color))]]}})((function(e){var n,t=e.theme,r=e.ownerState;return(0,o.Z)({color:(t.vars||t).palette.text.secondary},!r.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat("default"===r.color?t.vars.palette.action.activeChannel:t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===r.color?t.palette.action.active:t.palette[r.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==r.color&&(n={},(0,i.Z)(n,"&.".concat(C.checked,", &.").concat(C.indeterminate),{color:(t.vars||t).palette[r.color].main}),(0,i.Z)(n,"&.".concat(C.disabled),{color:(t.vars||t).palette.action.disabled}),n))})),P=(0,p.jsx)(f,{}),w=(0,p.jsx)(h,{}),S=(0,p.jsx)(x,{}),N=a.forwardRef((function(e,n){var t,i,l=(0,v.Z)({props:e,name:"MuiCheckbox"}),d=l.checkedIcon,u=void 0===d?P:d,h=l.color,f=void 0===h?"primary":h,x=l.icon,Z=void 0===x?w:x,b=l.indeterminate,j=void 0!==b&&b,C=l.indeterminateIcon,N=void 0===C?S:C,M=l.inputProps,R=l.size,T=void 0===R?"medium":R,F=l.className,k=(0,r.Z)(l,y),A=j?N:Z,L=j?N:u,I=(0,o.Z)({},l,{color:f,indeterminate:j,size:T}),z=function(e){var n=e.classes,t=e.indeterminate,i=e.color,r={root:["root",t&&"indeterminate","color".concat((0,m.Z)(i))]},a=(0,c.Z)(r,g,n);return(0,o.Z)({},n,a)}(I);return(0,p.jsx)(E,(0,o.Z)({type:"checkbox",inputProps:(0,o.Z)({"data-indeterminate":j},M),icon:a.cloneElement(A,{fontSize:null!=(t=A.props.fontSize)?t:T}),checkedIcon:a.cloneElement(L,{fontSize:null!=(i=L.props.fontSize)?i:T}),ownerState:I,ref:n,className:(0,s.Z)(z.root,F)},k,{classes:z}))}))},95193:function(e,n,t){"use strict";var i;t.d(n,{Z:function(){return p}});var r=t(29439),o=t(72791),a=t(69120),s=t(33073),c=t(40162);function l(e,n,t,i,a){var s="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,l=o.useState((function(){return a&&s?t(e).matches:i?i(e).matches:n})),d=(0,r.Z)(l,2),u=d[0],p=d[1];return(0,c.Z)((function(){var n=!0;if(s){var i=t(e),r=function(){n&&p(i.matches)};return r(),i.addListener(r),function(){n=!1,i.removeListener(r)}}}),[e,t,s]),u}var d=(i||(i=t.t(o,2))).useSyncExternalStore;function u(e,n,t,i){var a=o.useCallback((function(){return n}),[n]),s=o.useMemo((function(){if(null!==i){var n=i(e).matches;return function(){return n}}return a}),[a,e,i]),c=o.useMemo((function(){if(null===t)return[a,function(){return function(){}}];var n=t(e);return[function(){return n.matches},function(e){return n.addListener(e),function(){n.removeListener(e)}}]}),[a,t,e]),l=(0,r.Z)(c,2),u=l[0],p=l[1];return d(p,u,s)}function p(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=(0,a.Z)(),i="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,r=(0,s.Z)({name:"MuiUseMediaQuery",props:n,theme:t}),o=r.defaultMatches,c=void 0!==o&&o,p=r.matchMedia,h=void 0===p?i?window.matchMedia:null:p,f=r.ssrMatchMedia,x=void 0===f?null:f,m=r.noSsr;var v="function"===typeof e?e(t):e;v=v.replace(/^@media( ?)/m,"");var Z=void 0!==d?u:l,b=Z(v,c,h,x,m);return b}},26769:function(e,n,t){var i=t(39066),r=t(93629),o=t(43141);e.exports=function(e){return"string"==typeof e||!r(e)&&o(e)&&"[object String]"==i(e)}}}]);
-//# sourceMappingURL=1367.e7a5805d.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1367.e7a5805d.chunk.js.map b/portal-ui/build/static/js/1367.e7a5805d.chunk.js.map
deleted file mode 100644
index b5ccb85e8..000000000
--- a/portal-ui/build/static/js/1367.e7a5805d.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1367.e7a5805d.chunk.js","mappings":"8SAgJA,KAAeA,EAAAA,EAAAA,IAtGA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,IACF,GAmGL,EAjG0B,SAAH,GASF,IARnBC,EAAK,EAALA,MAAM,EAAD,EACLC,MAAAA,OAAK,MAAG,GAAE,MACVC,QAAAA,OAAO,MAAG,GAAE,MACZC,KAAAA,OAAI,MAAG,OAAM,EACbC,EAAO,EAAPA,QACAC,EAAc,EAAdA,eACgB,GADF,EACdC,SAAgB,EAChBC,cAAAA,OAAY,MAAG,QAAO,EAEtB,OACE,UAAC,WAAc,YACb,SAAC,KAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAI,CAAEC,aAAc,QAAS,UAC9C,UAAC,IAAU,CAACC,UAAWR,EAAQS,WAAW,WACxC,0BAAOZ,IACM,KAAZC,IACC,gBAAKU,UAAWR,EAAQU,iBAAiB,UACvC,SAAC,IAAO,CAACC,MAAOb,EAASc,UAAU,YAAW,UAC5C,gBAAKJ,UAAWR,EAAQF,QAAQ,UAC9B,SAAC,IAAQ,gBAQrB,SAAC,KAAI,CACHM,MAAI,EACJC,GAAI,GACJQ,MAAO,CACLC,UAAWX,EACXY,SAAU,OACVC,OAAQ,qBACR,UAEF,SAAC,IAAU,CACTpB,MAAOA,EACPqB,SAAUlB,EACVmB,SAAU,SAACC,GACTlB,EAAe,KAAM,KAAMkB,EAAIC,OAAOxB,MACxC,EACAyB,GAAI,eACJC,QAAS,GACTT,MAAO,CACLU,SAAU,GACVC,gBAAiB,UACjBC,WACE,+EACFC,UAAWvB,GAAgB,UAC3BwB,MAAO,gBAIb,SAAC,KAAI,CACHvB,MAAI,EACJC,GAAI,GACJC,GAAI,CACFsB,WAAY,UACZZ,OAAQ,oBACRa,UAAW,GACX,UAEF,SAAC,IAAG,CACFvB,GAAI,CACFwB,QAAS,OACTC,WAAY,SACZT,QAAS,MACTU,aAAc,MACdC,eAAgB,WAChB,WAAY,CACVC,OAAQ,OACRC,MAAO,OACPb,QAAS,MACT,aAAc,CACZc,WAAY,OAGhB,UAEF,SAAC,IAAc,CAACtC,QAAS,oBAAoB,UAC3C,SAAC,IAAe,CAACuC,KAAMzC,EAAM,UAC3B,SAAC,KAAM,CACL0C,KAAM,SACNjB,GAAI,mBACJkB,MAAM,SAAC,MAAQ,IACfZ,MAAO,UACPa,QAAS,sBAQzB,G,qJCjEA,KAAehD,EAAAA,EAAAA,IApDA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACX+C,aAAY,UACPA,EAAAA,GAAAA,aAELC,UAAW,CAAC,GACX,GA8CL,EAnCkB,SAAH,GAOQ,IAAD,IANpBC,YAAAA,OAAW,MAAG,GAAE,EAChB3C,EAAO,EAAPA,QACAkB,EAAQ,EAARA,SAAS,EAAD,EACR0B,kBAAAA,OAAiB,MAAG,MAAK,EACzBC,EAAa,EAAbA,cACAjD,EAAK,EAALA,MAEMkD,GAAU,QACdC,kBAAkB,GAAI,UAClBH,EAAiB,cACnB,SAAC,IAAc,CACbI,SAAUJ,EACVpC,UAAWR,EAAQ0C,UAAU,UAE7B,SAAC,IAAU,OAIjB,OACE,SAAC,IAAS,CACRC,YAAaA,EACbnC,UAAWqC,GAAgC7C,EAAQyC,YACnDpB,GAAG,kBACHxB,MAAM,GACNoD,WAAYH,EACZ5B,SAAU,SAACgC,GACThC,EAASgC,EAAE9B,OAAOxB,MACpB,EACA4C,QAAQ,WACR5C,MAAOA,GAGb,G,kMCQMuD,EAAgB,CACpBzB,UAAW,IAiGb,KAAelC,EAAAA,EAAAA,IA/JA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACX0D,cAAe,CACbtB,QAAS,OACTI,OAAQ,OACRC,MAAO,QAETkB,oBAAqB,CACnBlB,MAAO,QACPP,WAAY,UACZ0B,YAAa,oBACb,kBAAmB,CACjB,uBAAwB,CACtBxB,QAAS,QAEX,iBAAkB,CAChBA,QAAS,OACTyB,SAAU,MACVxB,WAAY,SACZE,eAAgB,aAChBuB,aAAc,oBACd,qBAAsB,CACpBC,YAAa,EACblD,aAAc,GAEhB,iBAAkB,CAChBqB,WAAY,UACZ8B,WAAY,MAIhB,sBAAuB,CACrB5B,QAAS,UAIf6B,oBAAqB,CACnBxB,MAAO,OACP,sBAAuB,CACrBD,OAAQ,SAGZ0B,SAAU,CACR1B,OAAQ,QAGV,4BAA6B,CAC3BkB,cAAe,CACbG,SAAU,SACVM,cAAe,UAEjBR,oBAAqB,CACnBlB,MAAO,OACPqB,aAAc,qBACd,wDAAyD,CACvDA,aAAc,WAInB,GAoGL,EA9FqB,SAAH,GAMQ,IALxBM,EAAQ,EAARA,SACA9D,EAAO,EAAPA,QAAQ,EAAD,EACP+D,YAAAA,OAAW,MAAG,IAAG,EACjBC,EAAM,EAANA,OACAC,EAAW,EAAXA,YAEMxE,GAAQyE,EAAAA,EAAAA,KACyB,GAAbC,EAAAA,EAAAA,MAAlBC,SAAAA,OAAQ,MAAG,GAAE,EAEfC,GAAgBC,EAAAA,EAAAA,GAAc7E,EAAM8E,YAAYC,KAAK,OAE3D,GAA0BC,EAAAA,EAAAA,UAASV,GAAY,eAAxCnE,EAAK,KAAE8E,EAAQ,KAEhBC,EAAyB,GACzBC,EAAiC,GAcvC,IAZAC,EAAAA,EAAAA,YAAU,WACR,GAAIZ,EAAa,CACf,IAAMa,EAAmBhB,EAASiB,MAChC,SAAC3E,GAAI,OAAKA,EAAK4E,UAAUC,KAAOb,CAAQ,IAGtCU,GACFJ,EAASI,EAAiBE,UAAUpF,MAExC,CACF,GAAG,CAACqE,EAAaH,EAAUM,KAEtBN,EAAU,OAAO,KAEtBA,EAASoB,SAAQ,SAACC,GAChBR,EAAWS,KAAKD,EAAMH,WACtBJ,EAAYQ,KAAKD,EAAME,QACzB,IAMA,OACE,SAAC,KAAU,CAACzF,MAAK,UAAKA,GAAQ,UAC5B,UAAC,IAAG,CAACY,UAAWR,EAAQoD,cAAc,WACpC,SAAC,IAAG,CAAC5C,UAAWR,EAAQqD,oBAAoB,UAC1C,SAAC,IAAO,CACNnC,SATW,SAACoE,EAA6BC,GACjDb,EAASa,EACX,EAQUC,YAAanB,EAAgB,aAAe,WAC5C7B,QAAS6B,EAAgB,aAAe,WACxCoB,cAAc,OACdjF,UAAWR,EAAQ0F,QAAQ,SAE1Bf,EAAWgB,KAAI,SAACvF,EAAMwF,GACrB,OAAIxF,GAEA,SAAC,KAAG,gBACFI,UAAWR,EAAQ6F,UAEnBjG,MAAK,UAAKgG,GACV/E,MAAOsC,GACH/C,GAAI,IACR0F,eAAa,EACbC,oBAAkB,EAClBC,aAAa,IAAK,gBANJJ,IAUb,IACT,SAIJ,UAAC,IAAG,CAACpF,UAAWR,EAAQ2D,oBAAoB,UACxCM,EAYE,KAXAW,EAAYe,KAAI,SAACvF,EAAMwF,GACrB,OACE,SAAC,IAAQ,CACP5F,SAAO,UAAOA,EAAQ4D,UAEtBhE,MAAK,UAAKgG,GAAQ,SAEjBxF,GAAc,MAAI,kBAHHwF,GAMtB,IAEH3B,GACC,gBAAKzD,UAAWR,EAAQ4D,SAAS,SAAEI,IACjC,YAKd,G,4ICnKO,IAAMiC,EAAgB,CAC3BC,IAAK,UACLC,MAAO,UACPC,OAAQ,WAGGC,EAAsB,SACjCC,EACAC,GAEA,OAAID,GAAeC,EAAc,EACxBN,EAAcC,IAEH,IAAhBK,GAAqBD,IAAgBC,EAAc,EAAI,EAClDN,EAAcG,OAEnBE,IAAgBC,EACXN,EAAcE,WADvB,CAGF,EAEaK,EAAoB,SAACC,GAChC,OAAQA,GACN,IAAK,UACH,OAAOR,EAAcC,IACvB,IAAK,SACH,OAAOD,EAAcE,MACvB,QACE,OAAOF,EAAcG,OAE3B,EACaM,EAAwB,SACnCC,EACAC,GAEA,OAAID,GAAiBC,EAAe,EAC3BX,EAAcC,IAEnBS,IAAkBC,EAAe,EAAI,EAChCX,EAAcG,OAEnBO,IAAkBC,EACbX,EAAcE,WADvB,CAGF,C,wcCzBMU,EAAe,CACnB/E,QAAS,OACTgF,oBAAqB,WACrBC,IAAK,QAMDC,EAAY,SAAH,GAA6C,IAAD,IAAtCC,OAAAA,OAAM,MAAG,GAAE,MAAEnD,SAAAA,OAAQ,MAAG,GAAE,EACvCoD,EAAW,IAAIC,OAAO,IAAD,OAJR,WAAH,IAAIC,EAAG,uDAAG,GAAE,OAC5BA,EAAIC,QAAQ,yBAA0B,OAAQ,CAGdC,CAAaL,GAAO,KAAK,KACnDM,EAAQC,OAAO1D,GAAU2D,MAAMP,GAErC,OAAID,EACKM,EAAM5B,KAAI,SAAC+B,EAAM9B,GAAK,OAC3BsB,EAASS,KAAKD,IAAQ,0BAAmBA,GAAR9B,GAAuB8B,CAAI,IAGvD5D,CAEX,EAuIA,GAAetE,EAAAA,EAAAA,IAnKA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACX+C,aAAY,kBACPA,EAAAA,GAAAA,aAAuB,IAC1BmF,SAAU,OAEX,GA6JL,EArImB,SAAH,GAMT,IALLC,EAAgB,EAAhBA,iBAAiB,EAAD,EAChB7H,QAAAA,OAAO,MAAG,CAAC,EAAC,EAKZ,GAA4ByE,EAAAA,EAAAA,UAAiB,IAAG,eAAzCqD,EAAM,KAAEC,EAAS,KAExB,OACE,UAACC,EAAA,GAAI,CAACC,WAAS,aACb,SAACD,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAG,UAChB,UAAC6H,EAAA,EAAG,CACF5H,GAAI,CACFwB,QAAS,OACTgF,oBAAqB,CACnBqB,GAAI,UACJ9H,GAAI,OAEN0B,WAAY,SACZE,eAAgB,gBAChB8E,IAAK,QACL,WAEF,SAACmB,EAAA,EAAG,UAAC,gBACL,SAACE,EAAA,EAAS,CACRzF,YAAa,SACbzB,SAAU6G,EACVlF,cAAe7C,EAAQyC,YACvB7C,MAAOkI,UAIb,SAACE,EAAA,GAAI,CACH5H,MAAI,EACJC,GAAI,GACJC,GAAI,CACF,gBAAiB,CACfkD,aAAc,qBAEhB,4BAA6B,CAC3B3B,UAAW,qBAEb,2BAA4B,CAC1B2B,aAAc,OAEhB6E,WAAY,OACZ,SAAU,CACR1G,MAAO,UACP+B,WAAY,MAEd,SAEDmE,EAAiBlC,KAAI,SAAC2C,EAAMC,GAC3B,IAAMC,EAASF,EAAKG,OACdC,EAAqB,UAAXF,EAChB,OACE,UAACN,EAAA,EAAG,CACF1H,UAAU,aAEVF,GAAI,CACFwB,QAAS,OACTgF,oBAAqB,MACrBC,IAAK,OACLxF,SAAU,OACVD,QAAS,gBACT,WAAY,CACVoC,WAAY,MAEd,WAEF,UAACwE,EAAA,EAAG,CAAC5H,GAAIuG,EAAa,WACpB,SAACqB,EAAA,EAAG,CAAC1H,UAAU,QAAO,SAAC,aACvB,UAAC0H,EAAA,EAAG,CACF5H,GAAI,CACFwB,QAAS,OAETC,WAAY,SACZ,cAAe,CACb0B,YAAa,MACbkF,KAAMD,EAAUzC,EAAAA,GAAAA,MAAsBA,EAAAA,GAAAA,IACtC/D,OAAQ,OACRC,MAAO,SAET,UAEDuG,GAAU,SAAC,MAAW,KAAM,SAAC,MAAY,IACzCF,SAIL,UAACN,EAAA,EAAG,CACF5H,GAAI,CACFwB,QAAS,OACTgF,oBAAqB,CACnBqB,GAAI,UACJ9H,GAAI,OAEN0G,IAAK,QACL,WAEF,UAACmB,EAAA,EAAG,CAAC5H,GAAIuG,EAAa,WACpB,SAACqB,EAAA,EAAG,CAAC1H,UAAU,QAAO,SAAC,cACvB,SAAC0H,EAAA,EAAG,UACDI,EAAKM,QACJN,EAAKM,OAAOjD,KAAI,SAACkD,EAAKC,GAAQ,OAC5B,0BACE,SAAC9B,EAAS,CAACC,OAAQa,EAAO,SAAEe,KAAgB,UADjCN,EAAC,cAAMO,GAEd,UAId,UAACZ,EAAA,EAAG,CAAC5H,GAAIuG,EAAa,WACpB,SAACqB,EAAA,EAAG,CAAC1H,UAAU,QAAO,SAAC,gBACvB,SAAC0H,EAAA,EAAG,UACDI,EAAKS,UACJT,EAAKS,SAASpD,KAAI,SAACqD,EAAKC,GAAQ,OAC9B,2BACG,KACD,SAACjC,EAAS,CAACC,OAAQa,EAAO,SAAEkB,MAAgB,UAFjCT,EAAC,cAAMU,GAGd,cAIV,UAjEEV,GAoEd,QAIR,I,uDCjHMW,GAAeC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,4BAAwB,KAghB3E,GAAe5J,EAAAA,EAAAA,IA9gBA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,gCACX2J,gBAAiB,CACfvH,QAAS,OACTG,eAAgB,WAChBoG,WAAY,GACZ,WAAY,CACVjG,WAAY,IAGhBkH,cAAe,CACbtI,OAAQ,oBACRkB,OAAQ,QAEVqH,eAAgB,CACdjI,QAAS,sBACTI,UAAW,SAEb8H,UAAW,CACTxI,OAAQ,oBACRM,QAAS,EACTf,aAAc,EACdkJ,aAAc,GAEhBC,SAAU,CACRhG,WAAY,SAEXiG,EAAAA,IACAlH,EAAAA,IACAmH,EAAAA,KACAC,EAAAA,EAAAA,IAAmBpK,EAAMqK,QAAQ,KACnC,GA+eL,EAzesB,SAAH,GAA0C,IAApC9J,EAAO,EAAPA,QACjB+J,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MACXC,GAASC,EAAAA,EAAAA,MAETC,GAAWC,EAAAA,EAAAA,IAAYC,EAAAA,IAE7B,GAA4B9F,EAAAA,EAAAA,UAAwB,MAAK,eAAlD+F,EAAM,KAAEC,EAAS,KACxB,GAAgDhG,EAAAA,EAAAA,UAAyB,IAAG,eAArEoD,EAAgB,KAAE6C,EAAmB,KAC5C,GAAgCjG,EAAAA,EAAAA,UAAmB,IAAG,eAA/CkG,EAAQ,KAAEC,EAAW,KAC5B,GAAkCnG,EAAAA,EAAAA,UAAmB,IAAG,eAAjDoG,EAAS,KAAEC,EAAY,KAC9B,IAAoCrG,EAAAA,EAAAA,WAAkB,GAAM,iBAArDsG,GAAU,MAAEC,GAAa,MAE1BC,IAAaC,EAAAA,EAAAA,IAAgBf,EAAOc,YAAc,IAExD,IAAgDxG,EAAAA,EAAAA,UAAiB,IAAG,iBAA7D0G,GAAgB,MAAEC,GAAmB,MAC5C,IAA0C3G,EAAAA,EAAAA,WAAkB,GAAK,iBAA1D4G,GAAa,MAAEC,GAAgB,MACtC,IAAsC7G,EAAAA,EAAAA,UAAiB,IAAG,iBAAnD8G,GAAW,MAAEC,GAAc,MAClC,IAAwC/G,EAAAA,EAAAA,WAAkB,GAAK,iBAAxDgH,GAAY,MAAEC,GAAe,MACpC,IAAwCjH,EAAAA,EAAAA,UAAiB,IAAG,iBAArDkH,GAAY,MAAEC,GAAe,MACpC,IAA0CnH,EAAAA,EAAAA,WAAkB,GAAK,iBAA1DoH,GAAa,MAAEC,GAAgB,MACtC,IAAoCrH,EAAAA,EAAAA,WAAkB,GAAM,iBAArDsH,GAAU,MAAEC,GAAa,MAE1BC,GAAiB5B,GAAYA,EAAS6B,SAAS,cAAgB,EAE/DC,IAAgBC,EAAAA,EAAAA,GACpBC,EAAAA,GACAC,EAAAA,IACA,GAGIC,IAAYH,EAAAA,EAAAA,GAChBC,EAAAA,GACAG,EAAAA,IACA,GAGIC,IAAeL,EAAAA,EAAAA,GACnBC,EAAAA,GACAK,EAAAA,IACA,GAGIC,IAAWP,EAAAA,EAAAA,GACfC,EAAAA,GACAO,EAAAA,IACA,GAGIC,IAAgBT,EAAAA,EAAAA,GACpBC,EAAAA,GACAS,EAAAA,IACA,GAGIC,IAAkBX,EAAAA,EAAAA,GACtBC,EAAAA,GACAW,EAAAA,IACA,GAGIC,IAAgBb,EAAAA,EAAAA,GACpBC,EAAAA,GACAa,EAAAA,IACA,IA6BFrI,EAAAA,EAAAA,YAAU,WAwEJwG,KA3BEA,KACEwB,GACFM,EAAAA,EAAAA,OACU,MAAM,kBAAD,QAAoBC,EAAAA,EAAAA,IAAgBnC,MAChDoC,MAAK,SAACC,GACL,GAAIA,EAAQ,CACV7C,EAAU6C,GACVlC,GACEkC,EACIC,KAAKC,UAAUD,KAAKE,MAAMH,EAAO9C,QAAS,KAAM,GAChD,IAEN,IAAMkD,EAAiBH,KAAKE,MAAMH,EAAO9C,QACzCE,EAAoBgD,EAAIC,UAC1B,CACArC,IAAiB,EACnB,IACCsC,OAAM,SAACC,GACN9D,GAAS+D,EAAAA,EAAAA,IAAqBD,IAC9BvC,IAAiB,EACnB,IAEFA,IAAiB,IAjEjBG,KACEgB,KAAiBR,GACnBkB,EAAAA,EAAAA,OAEI,MAAM,oBAAD,QACeC,EAAAA,EAAAA,IAAgBnC,IAAW,WAEhDoC,MAAK,SAACC,GACL1C,EAAY0C,GACZ5B,IAAgB,EAClB,IACCkC,OAAM,SAACC,GACN9D,GAAS+D,EAAAA,EAAAA,IAAqBD,IAC9BnC,IAAgB,EAClB,IAEFA,IAAgB,IAMhBG,KACEM,KAAkBF,GACpBkB,EAAAA,EAAAA,OAEI,MAAM,oBAAD,QACeC,EAAAA,EAAAA,IAAgBnC,IAAW,YAEhDoC,MAAK,SAACC,GACLxC,EAAawC,GACbxB,IAAiB,EACnB,IACC8B,OAAM,SAACC,GACN9D,GAAS+D,EAAAA,EAAAA,IAAqBD,IAC9B/B,IAAiB,EACnB,IAEFA,IAAiB,IAqCzB,GAAG,CACDb,GACAI,GACAI,GACAI,GACAjB,EACAE,EACAM,GACAX,EACAiB,GACAI,GACAW,GACAN,GACAU,GACAZ,GACAlC,IAGF,IAIMgE,GAAkC,KAAtB9C,GAAW+C,OAcvBC,GAAmB,CACvB,CACE3L,KAAM,OACN4L,QANmB,SAACC,GACtBlE,EAAS,GAAD,OAAImE,EAAAA,GAAAA,MAAe,aAAIhB,EAAAA,EAAAA,IAAgBe,IACjD,EAKIE,sBAAuB,kBAAO1B,EAAQ,IAIpC2B,GAAgB3D,EAAS7C,QAAO,SAACyG,GAAW,OAChDA,EAAYrC,SAASX,GAAY,IAO7BiD,GAAoB,CACxB,CACElM,KAAM,OACN4L,QAPoB,SAACO,GACvBxE,EAAS,GAAD,OAAImE,EAAAA,GAAAA,OAAgB,aAAIhB,EAAAA,EAAAA,IAAgBqB,IAClD,EAMIJ,sBAAuB,kBAAO9B,EAAS,IAIrCmC,GAAiB7D,EAAU/C,QAAO,SAACyG,GAAW,OAClDA,EAAYrC,SAASP,GAAa,IAG9BgD,GAAuB,WAC3BjD,IAAgB,GAChBI,IAAiB,GACjBR,IAAiB,EACnB,EAEA,OACE,UAAC,EAAAsD,SAAQ,WACN7C,KACC,SAAC7C,EAAY,CACX6C,WAAYA,GACZ8C,eAAgB5D,GAChB6D,2BAhD2B,SAACC,GAClC/C,IAAc,GACd/B,EAASmE,EAAAA,GAAAA,SACX,KAgDI,SAACY,EAAA,EAAU,CACTnP,OACE,SAAC,EAAA+O,SAAQ,WACP,SAACK,EAAA,EAAQ,CAAChK,GAAImJ,EAAAA,GAAAA,SAAoBvO,MAAO,gBAK/C,UAACqP,EAAA,EAAU,CAAC1O,UAAWR,EAAQsJ,cAAc,WAC3C,SAACtB,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC8O,EAAA,EAAW,CACV5M,MACE,SAAC,EAAAqM,SAAQ,WACP,SAACQ,EAAA,EAAe,CAACjN,MAAO,OAG5BxB,MAAOsK,GACPoE,UAAU,SAAC,EAAAT,SAAQ,UAAC,eACpBU,SACE,UAAC,EAAAV,SAAQ,YACP,SAACW,EAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAAA,qBACTC,SAAUrD,EAAAA,GACVsD,WAAY,CAAEC,UAAU,GAAO,UAE/B,SAACC,EAAA,EAAc,CACb/P,QACEiN,GACI,IACA+C,EAAAA,EAAAA,IACE9C,EAAAA,GACA,mBAEP,UAED,SAAC,KAAM,CACL3L,GAAI,gBACJxB,MAAO,gBACP2C,QAAQ,YACRD,MAAM,SAACwN,EAAA,EAAS,IAChB7B,QA/FC,WACnBlC,IAAc,EAChB,EA8FoB4D,UAAW7C,UAKjB,SAAC8C,EAAA,EAAc,CAAC/P,QAAS,UAAU,UACjC,SAAC,KAAM,CACLuB,GAAI,iBACJxB,MAAO,UACP2C,QAAQ,UACRD,MAAM,SAACyN,EAAA,QAAW,IAClB9B,QAAS,WACPS,IACF,cAQZ,UAACsB,EAAA,EAAY,WACV,CACCjL,UAAW,CAAEnF,MAAO,UAAW+P,UAAW/C,IAC1CxH,SACE,UAAC,EAAAuJ,SAAQ,YACP,gBAAKpO,UAAWR,EAAQkQ,aAAa,SAAC,oBACtC,SAACC,EAAA,EAAK,CAAC3P,UAAWR,EAAQuJ,eAAe,UACvC,SAAC,EAAU,CAAC1B,iBAAkBA,UAKrC,CACC7C,UAAW,CACTnF,MAAO,QACP+P,UAAWnD,IAAgBR,IAE7B5G,SACE,UAAC,EAAAuJ,SAAQ,YACP,gBAAKpO,UAAWR,EAAQkQ,aAAa,SAAC,WACtC,UAAClI,EAAA,GAAI,CAACC,WAAS,YACZ0C,EAASyF,OAAS,IACjB,SAACpI,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAIG,UAAWR,EAAQ2J,YAAY,UAChD,SAAC0G,EAAA,EAAS,CACR1N,YAAY,eACZnC,UAAWR,EAAQyC,YACnBpB,GAAG,kBACHxB,MAAM,GACNqB,SAAU,SAACoP,GACT9E,GAAe8E,EAAIlP,OAAOxB,MAC5B,EACAqD,WAAY,CACVF,kBAAkB,EAClBwN,gBACE,SAACC,EAAA,EAAc,CAACxN,SAAS,QAAO,UAC9B,SAACyN,EAAA,EAAU,OAIjBjO,QAAQ,gBAId,SAACkO,EAAA,EAAY,CACXC,YAAa1C,GACb2C,QAAS,CAAC,CAAE/Q,MAAO,OAAQgR,WAAY,SACvCC,UAAWrF,GACXsF,QAASzC,GACT0C,WAAW,oCACXC,QAAQ,gBAMjB,CACCjM,UAAW,CACTnF,MAAO,SACP+P,UAAWzD,IAAiBF,IAE9B5G,SACE,UAAC,EAAAuJ,SAAQ,YACP,gBAAKpO,UAAWR,EAAQkQ,aAAa,SAAC,YACtC,UAAClI,EAAA,GAAI,CAACC,WAAS,YACZ4C,EAAUuF,OAAS,IAClB,SAACpI,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAIG,UAAWR,EAAQ2J,YAAY,UAChD,SAAC0G,EAAA,EAAS,CACR1N,YAAY,gBACZnC,UAAWR,EAAQyC,YACnBpB,GAAG,kBACHxB,MAAM,GACNqB,SAAU,SAACoP,GACT1E,GAAgB0E,EAAIlP,OAAOxB,MAC7B,EACAqD,WAAY,CACVF,kBAAkB,EAClBwN,gBACE,SAACC,EAAA,EAAc,CAACxN,SAAS,QAAO,UAC9B,SAACyN,EAAA,EAAU,OAIjBjO,QAAQ,gBAId,SAACkO,EAAA,EAAY,CACXC,YAAanC,GACboC,QAAS,CAAC,CAAE/Q,MAAO,OAAQgR,WAAY,SACvCC,UAAWjF,GACXkF,QAASrC,GACTsC,WAAW,qCACXC,QAAQ,gBAMjB,CACCjM,UAAW,CAAEnF,MAAO,aAAc+P,UAAW/C,IAC7CxH,SACE,UAAC,EAAAuJ,SAAQ,YACP,gBAAKpO,UAAWR,EAAQkQ,aAAa,SAAC,gBACtC,iBACEgB,YAAU,EACVC,aAAa,MACbC,SAAU,SAAClO,GACEA,EA9VrBmO,iBACFtG,KAGJC,IAAc,GACViC,GACFE,EAAAA,EAAAA,OACU,OAAQ,mBAAoB,CAClCmE,KAAMrG,GACNT,OAAQW,KAETkC,MAAK,SAACkE,GACLvG,IAAc,GACdjB,GAASyH,EAAAA,EAAAA,IAAmB,gCAC5B7C,IACF,IACCf,OAAM,SAACC,GACN7C,IAAc,GACdjB,GAAS+D,EAAAA,EAAAA,IAAqBD,GAChC,IAEF7C,IAAc,GA0UF,EAAE,UAEF,UAAChD,EAAA,GAAI,CAACC,WAAS,aACb,SAACD,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAG,UAChB,SAACoR,EAAA,EAAiB,CAChBvR,UAAW+M,GACXrN,MAAOuL,GACPlL,eAAgB,SAACyR,EAAQC,EAAM/R,GAC7BwL,GAAoBxL,EACtB,EACAO,aAAc,aAGlB,UAAC6H,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAIG,UAAWR,EAAQqJ,gBAAgB,WAClDmB,IACA,mBACElI,KAAK,SACLX,MAAM,UACNnB,UAAWR,EAAQ4R,YACnB1D,QAAS,WAzP/B9C,GAAoB,KA2PE,EAAE,SACH,WAIH,SAACmE,EAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAAA,qBACTC,SAAUrD,EAAAA,GACVsD,WAAY,CAAEC,UAAU,GAAO,UAE/B,SAACC,EAAA,EAAc,CACb/P,QACEmN,GACI,IACA6C,EAAAA,EAAAA,IACE5C,EAAAA,GACA,iBAEP,UAED,SAAC,KAAM,CACL7L,GAAI,OACJiB,KAAK,SACLE,QAAQ,aACRb,MAAM,UACNiO,SACE7E,KAAegD,KAAcd,GAE/BpN,MAAO,gBAKdkL,KACC,SAAC/C,EAAA,GAAI,CAAC5H,MAAI,EAACC,GAAI,GAAG,UAChB,SAACwR,EAAA,EAAc,uBAYvC,G,yCCvlBIC,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,mBACD,iBACJN,EAAQ,EAAUG,C,yCCVdL,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,mBACD,eACJN,EAAQ,EAAUG,C,yCCVdL,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sEACD,cACJN,EAAQ,EAAUG,C,mLCLZI,EAAuBnJ,EAAAA,cAAoB,MAWlC,SAASoJ,EAAWC,GACjC,IACE3O,EAEE2O,EAFF3O,SACAlE,EACE6S,EADF7S,MAEI8S,EAZR,WACE,MAAoBtJ,EAAAA,SAAe,MAAK,eAAjC/H,EAAE,KAAEsR,EAAK,KAIhB,OAHAvJ,EAAAA,WAAgB,WACduJ,EAAM,SAAD,OAAUC,KAAKC,MAAsB,IAAhBD,KAAKE,WACjC,GAAG,IACIzR,CACT,CAMmB0R,GACXC,EAAU5J,EAAAA,SAAc,WAC5B,MAAO,CACLsJ,SAAAA,EACA9S,MAAAA,EAEJ,GAAG,CAAC8S,EAAU9S,IACd,OAAoBqT,EAAAA,EAAAA,KAAKV,EAAQW,SAAU,CACzCtT,MAAOoT,EACPlP,SAAUA,GAEd,CAmBO,SAASqP,IACd,OAAO/J,EAAAA,WAAiBmJ,EAC1B,CACO,SAASa,EAAWJ,EAASpT,GAIlC,OAAiB,OADboT,EADFN,SAGO,KAEF,GAAP,OAAUM,EAAQN,SAAQ,cAAM9S,EAClC,CACO,SAASyT,EAASL,EAASpT,GAIhC,OAAiB,OADboT,EADFN,SAGO,KAEF,GAAP,OAAUM,EAAQN,SAAQ,cAAM9S,EAClC,C,2GCvEM0T,EAAY,CAAC,YAMbC,EAAuBnK,EAAAA,YAAiB,SAAiBqJ,EAAOe,GAC9D,IACQC,EACRhB,EADF3O,SAEF4P,GAAQC,EAAAA,EAAAA,GAA8BlB,EAAOa,GACzCN,GAAUG,EAAAA,EAAAA,MAChB,GAAgB,OAAZH,EACF,MAAM,IAAIY,UAAU,0BAEtB,IAAM9P,EAAWsF,EAAAA,SAAAA,IAAmBqK,GAAc,SAAAtO,GAChD,OAAmBiE,EAAAA,eAAqBjE,GAGpBiE,EAAAA,aAAmBjE,EAAO,CAE5C,iBAAiBiO,EAAAA,EAAAA,IAAWJ,EAAS7N,EAAMsN,MAAM7S,OACjDyB,IAAIgS,EAAAA,EAAAA,IAASL,EAAS7N,EAAMsN,MAAM7S,SAL3B,IAOX,IACA,OAAoBqT,EAAAA,EAAAA,KAAKY,EAAAA,GAAMC,EAAAA,EAAAA,GAAS,CAAC,EAAGJ,EAAO,CACjDF,IAAKA,EACL5T,MAAOoT,EAAQpT,MACfkE,SAAUA,IAEd,IAWA,K,iKCzCO,SAASiQ,EAAwBC,GACtC,OAAOC,EAAAA,EAAAA,GAAqB,cAAeD,EAC7C,EACwBE,E,SAAAA,GAAuB,cAAe,CAAC,SAA/D,I,sBCHMZ,EAAY,CAAC,WAAY,YAAa,SAkBtCa,GAAeC,EAAAA,EAAAA,IAAO,MAAO,CACjC9C,KAAM,cACN0C,KAAM,OACNK,kBAAmB,SAAC5B,EAAO6B,GAAM,OAAKA,EAAOC,IAAI,GAH9BH,EAIlB,YACI,MACA,CACL9S,QAFK,EAAL7B,MAEeqK,QAAQ,GACxB,IA2DD,EA1D8BV,EAAAA,YAAiB,SAAkBoL,EAAShB,GACxE,IAAMf,GAAQgC,EAAAA,EAAAA,GAAc,CAC1BhC,MAAO+B,EACPlD,KAAM,gBAGJxN,EAGE2O,EAHF3O,SACAtD,EAEEiS,EAFFjS,UACAZ,EACE6S,EADF7S,MAEF8T,GAAQC,EAAAA,EAAAA,GAA8BlB,EAAOa,GACzCoB,GAAaZ,EAAAA,EAAAA,GAAS,CAAC,EAAGrB,GAC1BzS,EA9BkB,SAAA0U,GACxB,IACE1U,EACE0U,EADF1U,QAKF,OAAO2U,EAAAA,EAAAA,GAHO,CACZJ,KAAM,CAAC,SAEoBR,EAAyB/T,EACxD,CAsBkB4U,CAAkBF,GAC5B1B,GAAUG,EAAAA,EAAAA,MAChB,GAAgB,OAAZH,EACF,MAAM,IAAIY,UAAU,0BAEtB,IAAMvS,GAAK+R,EAAAA,EAAAA,IAAWJ,EAASpT,GACzBiV,GAAQxB,EAAAA,EAAAA,IAASL,EAASpT,GAChC,OAAoBqT,EAAAA,EAAAA,KAAKkB,GAAcL,EAAAA,EAAAA,GAAS,CAC9C,kBAAmBe,EACnBrU,WAAWsU,EAAAA,EAAAA,GAAK9U,EAAQuU,KAAM/T,GAC9BuU,OAAQnV,IAAUoT,EAAQpT,MAC1ByB,GAAIA,EACJmS,IAAKA,EACLwB,KAAM,WACNN,WAAYA,GACXhB,EAAO,CACR5P,SAAUlE,IAAUoT,EAAQpT,OAASkE,IAEzC,G,sLCpDA,GAAemR,EAAAA,EAAAA,IAA4BhC,EAAAA,EAAAA,KAAK,OAAQ,CACtDX,EAAG,+FACD,wBCFJ,GAAe2C,EAAAA,EAAAA,IAA4BhC,EAAAA,EAAAA,KAAK,OAAQ,CACtDX,EAAG,wIACD,YCFJ,GAAe2C,EAAAA,EAAAA,IAA4BhC,EAAAA,EAAAA,KAAK,OAAQ,CACtDX,EAAG,kGACD,yB,uDCPG,SAAS4C,EAAwBlB,GACtC,OAAOC,EAAAA,EAAAA,GAAqB,cAAeD,EAC7C,CACA,IACA,GADwBE,EAAAA,EAAAA,GAAuB,cAAe,CAAC,OAAQ,UAAW,WAAY,gBAAiB,eAAgB,mBCHzHZ,EAAY,CAAC,cAAe,QAAS,OAAQ,gBAAiB,oBAAqB,aAAc,OAAQ,aA4BzG6B,GAAef,EAAAA,EAAAA,IAAOgB,EAAAA,EAAY,CACtCC,kBAAmB,SAAAC,GAAI,OAAIC,EAAAA,EAAAA,IAAsBD,IAAkB,YAATA,CAAkB,EAC5EhE,KAAM,cACN0C,KAAM,OACNK,kBAAmB,SAAC5B,EAAO6B,GACzB,IACEI,EACEjC,EADFiC,WAEF,MAAO,CAACJ,EAAOC,KAAMG,EAAWc,eAAiBlB,EAAOkB,cAAoC,YAArBd,EAAW/S,OAAuB2S,EAAO,QAAD,QAASmB,EAAAA,EAAAA,GAAWf,EAAW/S,SAChJ,GATmByS,EAUlB,kBACD3U,EAAK,EAALA,MACAiV,EAAU,EAAVA,WAAU,OACNZ,EAAAA,EAAAA,GAAS,CACbnS,OAAQlC,EAAMiW,MAAQjW,GAAOkW,QAAQtT,KAAKuT,YACxClB,EAAW5O,eAAiB,CAC9B,UAAW,CACTtE,gBAAiB/B,EAAMiW,KAAO,QAAH,OAAgC,YAArBhB,EAAW/S,MAAsBlC,EAAMiW,KAAKC,QAAQE,OAAOC,cAAgBrW,EAAMiW,KAAKC,QAAQI,QAAQC,YAAW,cAAMvW,EAAMiW,KAAKC,QAAQE,OAAOI,aAAY,MAAMC,EAAAA,EAAAA,IAA2B,YAArBxB,EAAW/S,MAAsBlC,EAAMkW,QAAQE,OAAOM,OAAS1W,EAAMkW,QAAQjB,EAAW/S,OAAOyU,KAAM3W,EAAMkW,QAAQE,OAAOI,cAEzU,uBAAwB,CACtBzU,gBAAiB,iBAGC,YAArBkT,EAAW/S,QAAmB,2BACzB0U,EAAAA,QAAuB,eAAOA,EAAAA,eAAkC,CACpE1U,OAAQlC,EAAMiW,MAAQjW,GAAOkW,QAAQjB,EAAW/S,OAAOyU,QACxD,qBACKC,EAAAA,UAA6B,CACjC1U,OAAQlC,EAAMiW,MAAQjW,GAAOkW,QAAQE,OAAOjG,WAC7C,GACD,IACI0G,GAAkCrD,EAAAA,EAAAA,KAAKsD,EAAc,CAAC,GACtDC,GAA2BvD,EAAAA,EAAAA,KAAKwD,EAA0B,CAAC,GAC3DC,GAAwCzD,EAAAA,EAAAA,KAAK0D,EAA2B,CAAC,GA8I/E,EA7I8BvN,EAAAA,YAAiB,SAAkBoL,EAAShB,GACxE,IAAIoD,EAAsBC,EACpBpE,GAAQgC,EAAAA,EAAAA,GAAc,CAC1BhC,MAAO+B,EACPlD,KAAM,gBAER,EASMmB,EARFqE,YAAAA,OAAW,IAAG,EAAAR,EAAkB,IAQ9B7D,EAPF9Q,MAAAA,OAAK,IAAG,YAAS,IAOf8Q,EANFlQ,KAAMwU,OAAQ,IAAG,EAAAP,EAAW,IAM1B/D,EALF+C,cAAAA,OAAa,IAAG,GAAK,IAKnB/C,EAJFuE,kBAAmBC,OAAqB,IAAG,EAAAP,EAAwB,EACnE5T,EAGE2P,EAHF3P,WAAU,EAGR2P,EAFFyE,KAAAA,OAAI,IAAG,WAAQ,EACf1W,EACEiS,EADFjS,UAEFkT,GAAQC,EAAAA,EAAAA,GAA8BlB,EAAOa,GACzC/Q,EAAOiT,EAAgByB,EAAwBF,EAC/CC,EAAoBxB,EAAgByB,EAAwBH,EAC5DpC,GAAaZ,EAAAA,EAAAA,GAAS,CAAC,EAAGrB,EAAO,CACrC9Q,MAAAA,EACA6T,cAAAA,EACA0B,KAAAA,IAEIlX,EAtEkB,SAAA0U,GACxB,IACE1U,EAGE0U,EAHF1U,QACAwV,EAEEd,EAFFc,cACA7T,EACE+S,EADF/S,MAEIwV,EAAQ,CACZ5C,KAAM,CAAC,OAAQiB,GAAiB,gBAAiB,QAAF,QAAUC,EAAAA,EAAAA,GAAW9T,MAEhEyV,GAAkBzC,EAAAA,EAAAA,GAAewC,EAAOjC,EAAyBlV,GACvE,OAAO8T,EAAAA,EAAAA,GAAS,CAAC,EAAG9T,EAASoX,EAC/B,CA2DkBxC,CAAkBF,GAClC,OAAoBzB,EAAAA,EAAAA,KAAKkC,GAAcrB,EAAAA,EAAAA,GAAS,CAC9CxR,KAAM,WACNQ,YAAYgR,EAAAA,EAAAA,GAAS,CACnB,qBAAsB0B,GACrB1S,GACHP,KAAmB6G,EAAAA,aAAmB7G,EAAM,CAC1ChB,SAA0D,OAA/CqV,EAAuBrU,EAAKkQ,MAAMlR,UAAoBqV,EAAuBM,IAE1FJ,YAA0B1N,EAAAA,aAAmB4N,EAAmB,CAC9DzV,SAAwE,OAA7DsV,EAAwBG,EAAkBvE,MAAMlR,UAAoBsV,EAAwBK,IAEzGxC,WAAYA,EACZlB,IAAKA,EACLhT,WAAWsU,EAAAA,EAAAA,GAAK9U,EAAQuU,KAAM/T,IAC7BkT,EAAO,CACR1T,QAASA,IAEb,G,sIClGA,SAASqX,EAAiBC,EAAOC,EAAgBC,EAAYC,EAAeC,GAC1E,IAAMC,EAAsC,qBAAXC,QAAuD,qBAAtBA,OAAOJ,WACzE,EAA0BpO,EAAAA,UAAe,WACvC,OAAIsO,GAASC,EACJH,EAAWF,GAAOO,QAEvBJ,EACKA,EAAcH,GAAOO,QAKvBN,CACT,IAAE,eAXKO,EAAK,KAAEC,EAAQ,KAkCtB,OAtBAC,EAAAA,EAAAA,IAAkB,WAChB,IAAI7B,GAAS,EACb,GAAKwB,EAAL,CAGA,IAAMM,EAAYT,EAAWF,GACvBY,EAAc,WAId/B,GACF4B,EAASE,EAAUJ,QAEvB,EAIA,OAHAK,IAEAD,EAAUE,YAAYD,GACf,WACL/B,GAAS,EACT8B,EAAUG,eAAeF,EAC3B,CAhBA,CAiBF,GAAG,CAACZ,EAAOE,EAAYG,IAChBG,CACT,CAGA,IAAMO,GAAiCjP,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAiC,qBACxE,SAASkP,EAAiBhB,EAAOC,EAAgBC,EAAYC,GAC3D,IAAMc,EAAqBnP,EAAAA,aAAkB,kBAAMmO,CAAc,GAAE,CAACA,IAC9DiB,EAAoBpP,EAAAA,SAAc,WACtC,GAAsB,OAAlBqO,EAAwB,CAC1B,IACEI,EACEJ,EAAcH,GADhBO,QAEF,OAAO,kBAAMA,CAAO,CACtB,CACA,OAAOU,CACT,GAAG,CAACA,EAAoBjB,EAAOG,IAC/B,EAAiCrO,EAAAA,SAAc,WAC7C,GAAmB,OAAfoO,EACF,MAAO,CAACe,EAAoB,kBAAM,WAAO,CAAC,GAE5C,IAAME,EAAiBjB,EAAWF,GAClC,MAAO,CAAC,kBAAMmB,EAAeZ,OAAO,EAAE,SAAAa,GAGpC,OADAD,EAAeN,YAAYO,GACpB,WACLD,EAAeL,eAAeM,EAChC,CACF,EACF,GAAG,CAACH,EAAoBf,EAAYF,IAAO,eAZpCqB,EAAW,KAAEC,EAAS,KAc7B,OADcP,EAA+BO,EAAWD,EAAaH,EAEvE,CACe,SAASlU,EAAcuU,GAA0B,IAAdC,EAAU,UAAH,6CAAG,CAAC,EACrDrZ,GAAQyE,EAAAA,EAAAA,KAKRyT,EAAsC,qBAAXC,QAAuD,qBAAtBA,OAAOJ,WACzE,GAKIuB,EAAAA,EAAAA,GAAc,CAChBzH,KAAM,mBACNmB,MAAOqG,EACPrZ,MAAAA,IACA,IARA8X,eAAAA,OAAc,IAAG,GAAK,MACtBC,WAAAA,OAAU,IAAG,EAAAG,EAAoBC,OAAOJ,WAAa,KAAI,MACzDC,cAAAA,OAAa,IAAG,OAAI,EACpBC,EAAK,EAALA,MAWF,IAAIJ,EAA8B,oBAAfuB,EAA4BA,EAAWpZ,GAASoZ,EACnEvB,EAAQA,EAAMjQ,QAAQ,eAAgB,IAGtC,IAAM2R,OAAiEC,IAAnCZ,EAA+CC,EAAmBjB,EAChGS,EAAQkB,EAA4B1B,EAAOC,EAAgBC,EAAYC,EAAeC,GAQ5F,OAAOI,CACT,C,wBChHA,IAAIoB,EAAanH,EAAQ,OACrBoH,EAAUpH,EAAQ,OAClBqH,EAAerH,EAAQ,OA2B3BsH,EAAOrH,QALP,SAAkBpS,GAChB,MAAuB,iBAATA,IACVuZ,EAAQvZ,IAAUwZ,EAAaxZ,IArBrB,mBAqB+BsZ,EAAWtZ,EAC1D,C","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/SearchBox.tsx","screens/Console/Common/VerticalTabs/VerticalTabs.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Policies/PolicyView.tsx","screens/Console/Policies/PolicyDetails.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/lab/TabContext/TabContext.js","../node_modules/@mui/lab/TabList/TabList.js","../node_modules/@mui/lab/TabPanel/tabPanelClasses.js","../node_modules/@mui/lab/TabPanel/TabPanel.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/lodash/isString.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"../../../../../icons\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport SearchIcon from \"../../../icons/SearchIcon\";\nimport TextField from \"@mui/material/TextField\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"./FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n },\n adornment: {},\n });\n\ntype SearchBoxProps = {\n placeholder?: string;\n value: string;\n classes: any;\n onChange: (value: string) => void;\n adornmentPosition?: \"start\" | \"end\";\n overrideClass?: any;\n};\n\nconst SearchBox = ({\n placeholder = \"\",\n classes,\n onChange,\n adornmentPosition = \"end\",\n overrideClass,\n value,\n}: SearchBoxProps) => {\n const inputProps = {\n disableUnderline: true,\n [`${adornmentPosition}Adornment`]: (\n \n \n \n ),\n };\n return (\n {\n onChange(e.target.value);\n }}\n variant=\"standard\"\n value={value}\n />\n );\n};\n\nexport default withStyles(styles)(SearchBox);\n","import React, { useState, useEffect } from \"react\";\nimport { Box, Tab, TabProps } from \"@mui/material\";\nimport { TabContext, TabList, TabPanel } from \"@mui/lab\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useLocation } from \"react-router-dom\";\n\nexport type TabItemProps = {\n tabConfig: TabProps | any;\n content?: JSX.Element | JSX.Element[];\n};\n\ntype VerticalTabsProps = {\n classes: any;\n children: TabItemProps[];\n selectedTab?: string;\n routes?: any;\n isRouteTabs?: boolean;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n tabsContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n },\n tabsHeaderContainer: {\n width: \"300px\",\n background: \"#F8F8F8\",\n borderRight: \"1px solid #EAEAEA\",\n \"& .MuiTabs-root\": {\n \"& .MuiTabs-indicator\": {\n display: \"none\",\n },\n \"& .MuiTab-root\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"& .MuiSvgIcon-root\": {\n marginRight: 8,\n marginBottom: 0,\n },\n \"&.Mui-selected\": {\n background: \"#E5E5E5\",\n fontWeight: 600,\n },\n },\n\n \"&. MuiTabs-scroller\": {\n display: \"none\",\n },\n },\n },\n tabContentContainer: {\n width: \"100%\",\n \"& .MuiTabPanel-root\": {\n height: \"100%\",\n },\n },\n tabPanel: {\n height: \"100%\",\n },\n /*Below md breakpoint make it horizontal and style it for scrolling tabs*/\n \"@media (max-width: 900px)\": {\n tabsContainer: {\n flexFlow: \"column\",\n flexDirection: \"column\",\n },\n tabsHeaderContainer: {\n width: \"100%\",\n borderBottom: \" 1px solid #EAEAEA\",\n \"& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root\": {\n borderBottom: \" 0px\",\n },\n },\n },\n });\n\nconst tabStripStyle = {\n minHeight: 60,\n};\n\nconst VerticalTabs = ({\n children,\n classes,\n selectedTab = \"0\",\n routes,\n isRouteTabs,\n}: VerticalTabsProps) => {\n const theme = useTheme();\n const { pathname = \"\" } = useLocation();\n\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [value, setValue] = useState(selectedTab);\n\n const headerList: TabProps[] = [];\n const contentList: React.ReactNode[] = [];\n\n useEffect(() => {\n if (isRouteTabs) {\n const tabConfigElement = children.find(\n (item) => item.tabConfig.to === pathname\n );\n\n if (tabConfigElement) {\n setValue(tabConfigElement.tabConfig.value);\n }\n }\n }, [isRouteTabs, children, pathname]);\n\n if (!children) return null;\n\n children.forEach((child) => {\n headerList.push(child.tabConfig);\n contentList.push(child.content);\n });\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n };\n\n return (\n \n \n \n \n {headerList.map((item, index) => {\n if (item) {\n return (\n \n );\n }\n return null;\n })}\n \n \n\n \n {!isRouteTabs\n ? contentList.map((item, index) => {\n return (\n \n {item ? item : null}\n \n );\n })\n : null}\n {isRouteTabs ? (\n {routes}
\n ) : null}\n \n \n \n );\n};\n\nexport default withStyles(styles)(VerticalTabs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#E7A219\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number\n) => {\n if (activeDisks <= totalDrives / 2) {\n return STATUS_COLORS.RED;\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeDisks === totalDrives) {\n return STATUS_COLORS.GREEN;\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"online\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return STATUS_COLORS.RED;\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeNetwork === networkTotal) {\n return STATUS_COLORS.GREEN;\n }\n};\n","// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { IAMStatement } from \"./types\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { searchField } from \"../Common/FormComponents/common/styleLibrary\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { DisabledIcon, EnabledIcon } from \"../../../icons\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n });\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"60px 1fr\",\n gap: \"15px\",\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n classes = {},\n}: {\n policyStatements: IAMStatement[];\n classes?: any;\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n Statements \n \n \n \n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect: \n \n {isAllow ? : }\n {effect}\n \n \n\n \n \n Actions: \n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n \n {act} \n
\n ))}\n \n \n \n Resources: \n \n {stmt.Resource &&\n stmt.Resource.map((res, resIndex) => (\n \n {\" \"}\n {res} \n
\n ))}\n \n \n \n \n );\n })}\n \n \n );\n};\n\nexport default withStyles(styles)(PolicyView);\n","// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IAMPolicy, IAMStatement, Policy } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Button } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n actionsTray,\n containerForHeader,\n modalBasic,\n searchField,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport Paper from \"@mui/material/Paper\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../common/api\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField from \"@mui/material/TextField\";\nimport ScreenTitle from \"../Common/ScreenTitle/ScreenTitle\";\nimport IAMPoliciesIcon from \"../../../icons/IAMPoliciesIcon\";\nimport RefreshIcon from \"../../../icons/RefreshIcon\";\nimport SearchIcon from \"../../../icons/SearchIcon\";\nimport TrashIcon from \"../../../icons/TrashIcon\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport VerticalTabs from \"../Common/VerticalTabs/VerticalTabs\";\nimport BackLink from \"../../../common/BackLink\";\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n getGroupPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listGroupPermissions,\n listUsersPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport PolicyView from \"./PolicyView\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setSnackBarMessage } from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingTop: 16,\n \"& button\": {\n marginLeft: 8,\n },\n },\n pageContainer: {\n border: \"1px solid #EAEAEA\",\n height: \"100%\",\n },\n paperContainer: {\n padding: \"15px 15px 15px 50px\",\n minHeight: \"450px\",\n },\n statement: {\n border: \"1px solid #DADADA\",\n padding: 8,\n marginBottom: 8,\n borderRadius: 4,\n },\n labelCol: {\n fontWeight: \"bold\",\n },\n ...actionsTray,\n ...searchField,\n ...modalBasic,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IPolicyDetailsProps {\n classes: any;\n}\n\nconst PolicyDetails = ({ classes }: IPolicyDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const features = useSelector(selFeatures);\n\n const [policy, setPolicy] = useState(null);\n const [policyStatements, setPolicyStatements] = useState([]);\n const [userList, setUserList] = useState([]);\n const [groupList, setGroupList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n\n const policyName = decodeURLString(params.policyName || \"\");\n\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n const [loadingPolicy, setLoadingPolicy] = useState(true);\n const [filterUsers, setFilterUsers] = useState(\"\");\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [filterGroups, setFilterGroups] = useState(\"\");\n const [loadingGroups, setLoadingGroups] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n const ldapIsEnabled = (features && features.includes(\"ldap-idp\")) || false;\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n listGroupPermissions,\n true\n );\n\n const viewGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n true\n );\n\n const displayUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n true\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true\n );\n\n const displayPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true\n );\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n true\n );\n\n const canEditPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n true\n );\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (canEditPolicy) {\n api\n .invoke(\"POST\", \"/api/v1/policies\", {\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api\n .invoke(\n \"GET\",\n `/api/v1/policies/${encodeURLString(policyName)}/users`\n )\n .then((result: any) => {\n setUserList(result);\n setLoadingUsers(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n };\n\n const loadGroupsForPolicy = () => {\n if (loadingGroups) {\n if (displayGroups && !ldapIsEnabled) {\n api\n .invoke(\n \"GET\",\n `/api/v1/policies/${encodeURLString(policyName)}/groups`\n )\n .then((result: any) => {\n setGroupList(result);\n setLoadingGroups(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingGroups(false);\n });\n } else {\n setLoadingGroups(false);\n }\n }\n };\n const loadPolicyDetails = () => {\n if (loadingPolicy) {\n if (displayPolicy) {\n api\n .invoke(\"GET\", `/api/v1/policy/${encodeURLString(policyName)}`)\n .then((result: any) => {\n if (result) {\n setPolicy(result);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.policy), null, 4)\n : \"\"\n );\n const pol: IAMPolicy = JSON.parse(result.policy);\n setPolicyStatements(pol.Statement);\n }\n setLoadingPolicy(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingPolicy(false);\n });\n } else {\n setLoadingPolicy(false);\n }\n }\n };\n\n if (loadingPolicy) {\n loadPolicyDetails();\n loadUsersForPolicy();\n loadGroupsForPolicy();\n }\n }, [\n policyName,\n loadingPolicy,\n loadingUsers,\n loadingGroups,\n setUserList,\n setGroupList,\n setPolicyDefinition,\n setPolicy,\n setLoadingUsers,\n setLoadingGroups,\n displayUsers,\n displayGroups,\n displayPolicy,\n ldapIsEnabled,\n dispatch,\n ]);\n\n const resetForm = () => {\n setPolicyDefinition(\"{}\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n const deletePolicy = () => {\n setDeleteOpen(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n navigate(IAM_PAGES.POLICIES);\n };\n\n const userViewAction = (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n };\n const userTableActions = [\n {\n type: \"view\",\n onClick: userViewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n const filteredUsers = userList.filter((elementItem) =>\n elementItem.includes(filterUsers)\n );\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n const filteredGroups = groupList.filter((elementItem) =>\n elementItem.includes(filterGroups)\n );\n\n const refreshPolicyDetails = () => {\n setLoadingUsers(true);\n setLoadingGroups(true);\n setLoadingPolicy(true);\n };\n\n return (\n \n {deleteOpen && (\n \n )}\n \n \n \n }\n />\n\n \n \n \n \n \n }\n title={policyName}\n subTitle={IAM Policy }\n actions={\n \n \n \n }\n onClick={deletePolicy}\n disabled={!canDeletePolicy}\n />\n \n \n\n \n }\n onClick={() => {\n refreshPolicyDetails();\n }}\n />\n \n \n }\n />\n \n\n \n {{\n tabConfig: { label: \"Summary\", disabled: !displayPolicy },\n content: (\n \n Policy Summary
\n \n \n \n \n ),\n }}\n {{\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n },\n content: (\n \n Users
\n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n \n )}\n \n \n \n ),\n }}\n {{\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n },\n content: (\n \n Groups
\n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val.target.value);\n }}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n \n )}\n \n \n \n ),\n }}\n {{\n tabConfig: { label: \"Raw Policy\", disabled: !displayPolicy },\n content: (\n \n Raw Policy
\n \n \n ),\n }}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PolicyDetails);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * @type {React.Context<{ idPrefix: string; value: string } | null>}\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Context = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n Context.displayName = 'TabContext';\n}\nfunction useUniquePrefix() {\n const [id, setId] = React.useState(null);\n React.useEffect(() => {\n setId(`mui-p-${Math.round(Math.random() * 1e5)}`);\n }, []);\n return id;\n}\nexport default function TabContext(props) {\n const {\n children,\n value\n } = props;\n const idPrefix = useUniquePrefix();\n const context = React.useMemo(() => {\n return {\n idPrefix,\n value\n };\n }, [idPrefix, value]);\n return /*#__PURE__*/_jsx(Context.Provider, {\n value: context,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? TabContext.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 value of the currently selected `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\n\n/**\n * @returns {unknown}\n */\nexport function useTabContext() {\n return React.useContext(Context);\n}\nexport function getPanelId(context, value) {\n const {\n idPrefix\n } = context;\n if (idPrefix === null) {\n return null;\n }\n return `${context.idPrefix}-P-${value}`;\n}\nexport function getTabId(context, value) {\n const {\n idPrefix\n } = context;\n if (idPrefix === null) {\n return null;\n }\n return `${context.idPrefix}-T-${value}`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@mui/material/Tabs';\nimport { useTabContext, getTabId, getPanelId } from '../TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabList = /*#__PURE__*/React.forwardRef(function TabList(props, ref) {\n const {\n children: childrenProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = useTabContext();\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n // SOMEDAY: `Tabs` will set those themselves\n 'aria-controls': getPanelId(context, child.props.value),\n id: getTabId(context, child.props.value)\n });\n });\n return /*#__PURE__*/_jsx(Tabs, _extends({}, other, {\n ref: ref,\n value: context.value,\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabList.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 * A list of ` ` elements.\n */\n children: PropTypes.node\n} : void 0;\nexport default TabList;","import generateUtilityClass from '@mui/material/generateUtilityClass';\nimport generateUtilityClasses from '@mui/material/generateUtilityClasses';\nexport function getTabPanelUtilityClass(slot) {\n return generateUtilityClass('MuiTabPanel', slot);\n}\nconst tabPanelClasses = generateUtilityClasses('MuiTabPanel', ['root']);\nexport default tabPanelClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { getTabPanelUtilityClass } from './tabPanelClasses';\nimport { getPanelId, getTabId, useTabContext } from '../TabContext';\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, getTabPanelUtilityClass, classes);\n};\nconst TabPanelRoot = styled('div', {\n name: 'MuiTabPanel',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(3)\n}));\nconst TabPanel = /*#__PURE__*/React.forwardRef(function TabPanel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabPanel'\n });\n const {\n children,\n className,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props);\n const classes = useUtilityClasses(ownerState);\n const context = useTabContext();\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n const id = getPanelId(context, value);\n const tabId = getTabId(context, value);\n return /*#__PURE__*/_jsx(TabPanelRoot, _extends({\n \"aria-labelledby\": tabId,\n className: clsx(classes.root, className),\n hidden: value !== context.value,\n id: id,\n ref: ref,\n role: \"tabpanel\",\n ownerState: ownerState\n }, other, {\n children: value === context.value && children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabPanel.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 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 corresponding `Tab`. Must use the index of the `Tab` when\n * no `value` was passed to `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\nexport default TabPanel;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","import * as React from 'react';\nimport { getThemeProps, useThemeWithoutDefault as useTheme } from '@mui/system';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const [match, setMatch] = React.useState(() => {\n if (noSsr && supportMatchMedia) {\n return matchMedia(query).matches;\n }\n if (ssrMatchMedia) {\n return ssrMatchMedia(query).matches;\n }\n\n // Once the component is mounted, we rely on the\n // event listeners to return the correct matches value.\n return defaultMatches;\n });\n useEnhancedEffect(() => {\n let active = true;\n if (!supportMatchMedia) {\n return undefined;\n }\n const queryList = matchMedia(query);\n const updateMatch = () => {\n // Workaround Safari wrong implementation of matchMedia\n // TODO can we remove it?\n // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n if (active) {\n setMatch(queryList.matches);\n }\n };\n updateMatch();\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n queryList.addListener(updateMatch);\n return () => {\n active = false;\n queryList.removeListener(updateMatch);\n };\n }, [query, matchMedia, supportMatchMedia]);\n return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia]);\n const [getSnapshot, subscribe] = React.useMemo(() => {\n if (matchMedia === null) {\n return [getDefaultSnapshot, () => () => {}];\n }\n const mediaQueryList = matchMedia(query);\n return [() => mediaQueryList.matches, notify => {\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n mediaQueryList.addListener(notify);\n return () => {\n mediaQueryList.removeListener(notify);\n };\n }];\n }, [getDefaultSnapshot, matchMedia, query]);\n const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n const theme = useTheme();\n // Wait for jsdom to support the match media feature.\n // All the browsers MUI support have this built-in.\n // This defensive check is here for simplicity.\n // Most of the time, the match media logic isn't central to people tests.\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const {\n defaultMatches = false,\n matchMedia = supportMatchMedia ? window.matchMedia : null,\n ssrMatchMedia = null,\n noSsr\n } = getThemeProps({\n name: 'MuiUseMediaQuery',\n props: options,\n theme\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof queryInput === 'function' && theme === null) {\n console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n query = query.replace(/^@media( ?)/m, '');\n\n // TODO: Drop `useMediaQueryOld` and use `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue({\n query,\n match\n });\n }\n return match;\n}","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["withStyles","theme","createStyles","fieldBasic","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","item","xs","sx","marginBottom","className","inputLabel","tooltipContainer","title","placement","style","maxHeight","overflow","border","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","text","type","icon","variant","searchField","adornment","placeholder","adornmentPosition","overrideClass","inputProps","disableUnderline","position","InputProps","e","tabStripStyle","tabsContainer","tabsHeaderContainer","borderRight","flexFlow","borderBottom","marginRight","fontWeight","tabContentContainer","tabPanel","flexDirection","children","selectedTab","routes","isRouteTabs","useTheme","useLocation","pathname","isSmallScreen","useMediaQuery","breakpoints","down","useState","setValue","headerList","contentList","useEffect","tabConfigElement","find","tabConfig","to","forEach","child","push","content","event","newValue","orientation","scrollButtons","tabList","map","index","tabHeader","disableRipple","disableTouchRipple","focusRipple","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","gridTemplateColumns","gap","Highlight","search","txtParts","RegExp","str","replace","escapeRegExp","parts","String","split","part","test","maxWidth","policyStatements","filter","setFilter","Grid","container","Box","sm","SearchBox","paddingTop","stmt","i","effect","Effect","isAllow","fill","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","buttonContainer","pageContainer","paperContainer","statement","borderRadius","labelCol","actionsTray","modalBasic","containerForHeader","spacing","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","setPolicyStatements","userList","setUserList","groupList","setGroupList","addLoading","setAddLoading","policyName","decodeURLString","policyDefinition","setPolicyDefinition","loadingPolicy","setLoadingPolicy","filterUsers","setFilterUsers","loadingUsers","setLoadingUsers","filterGroups","setFilterGroups","loadingGroups","setLoadingGroups","deleteOpen","setDeleteOpen","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","api","encodeURLString","then","result","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","validSave","trim","userTableActions","onClick","user","IAM_PAGES","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","filteredGroups","refreshPolicyDetails","Fragment","selectedPolicy","closeDeleteModalAndRefresh","refresh","PageHeader","BackLink","PageLayout","ScreenTitle","IAMPoliciesIcon","subTitle","actions","SecureComponent","scopes","IAM_SCOPES","resource","errorProps","disabled","TooltipWrapper","permissionTooltipHelper","TrashIcon","RefreshIcon","VerticalTabs","sectionTitle","Paper","length","TextField","val","startAdornment","InputAdornment","SearchIcon","TableWrapper","itemActions","columns","elementKey","isLoading","records","entityName","idField","noValidate","autoComplete","onSubmit","preventDefault","name","_","setSnackBarMessage","CodeMirrorWrapper","editor","data","clearButton","LinearProgress","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Context","TabContext","props","idPrefix","setId","Math","round","random","useUniquePrefix","context","_jsx","Provider","useTabContext","getPanelId","getTabId","_excluded","TabList","ref","childrenProp","other","_objectWithoutPropertiesLoose","TypeError","Tabs","_extends","getTabPanelUtilityClass","slot","generateUtilityClass","generateUtilityClasses","TabPanelRoot","styled","overridesResolver","styles","root","inProps","useThemeProps","ownerState","composeClasses","useUtilityClasses","tabId","clsx","hidden","role","createSvgIcon","getCheckboxUtilityClass","CheckboxRoot","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","indeterminate","capitalize","vars","palette","secondary","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","_icon$props$fontSize","_indeterminateIcon$pr","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","size","slots","composedClasses","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","supportMatchMedia","window","matches","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","mediaQueryList","notify","getSnapshot","subscribe","queryInput","options","getThemeProps","useMediaQueryImplementation","undefined","baseGetTag","isArray","isObjectLike","module"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1440.8750dde4.chunk.js b/portal-ui/build/static/js/1440.8750dde4.chunk.js
deleted file mode 100644
index df732f4aa..000000000
--- a/portal-ui/build/static/js/1440.8750dde4.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1440],{23804:function(e,t,n){"use strict";n(72791);var o=n(11135),r=n(25787),i=n(61889),c=n(80184);t.Z=(0,r.Z)((function(e){return(0,o.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,o=e.title,r=e.help;return(0,c.jsx)("div",{className:t.root,children:(0,c.jsxs)(i.ZP,{container:!0,children:[(0,c.jsxs)(i.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,o]}),(0,c.jsx)(i.ZP,{item:!0,xs:12,className:t.helpText,children:r})]})})}))},25702:function(e,t,n){"use strict";n.r(t);var o=n(29439),r=n(1413),i=n(72791),c=n(78687),a=n(57689),s=n(75952),l=n(11135),d=n(25787),u=n(26181),m=n.n(u),h=n(61889),f=n(47919),p=n(86856),v=n(23814),x=n(92983),Z=n(81207),b=n(23804),j=n(60680),k=n(38442),S=n(56087),g=n(75578),C=n(87995),z=n(9859),I=n(25469),E=n(27454),F=n(80184),N=(0,g.Z)(i.lazy((function(){return n.e(455).then(n.bind(n,80455))}))),P=(0,g.Z)(i.lazy((function(){return Promise.all([n.e(3801),n.e(1918),n.e(6172),n.e(2661)]).then(n.bind(n,82661))})));t.default=(0,d.Z)((function(e){return(0,l.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},v.qg),v.OR),{},{twHeight:{minHeight:400}}))}))((function(e){var t=e.classes,n=(0,I.TL)(),r=(0,a.UO)(),l=(0,c.v9)(z.HQ),d=(0,i.useState)(!1),u=(0,o.Z)(d,2),v=u[0],g=u[1],T=(0,i.useState)(!0),y=(0,o.Z)(T,2),O=y[0],_=y[1],w=(0,i.useState)([]),A=(0,o.Z)(w,2),H=A[0],M=A[1],B=(0,i.useState)(!1),R=(0,o.Z)(B,2),V=R[0],K=R[1],L=(0,i.useState)(null),U=(0,o.Z)(L,2),D=U[0],G=U[1],q=r.bucketName||"",Q=(0,k.F)(q,[S.Ft.S3_GET_BUCKET_NOTIFICATIONS]);(0,i.useEffect)((function(){l&&_(!0)}),[l,_]),(0,i.useEffect)((function(){O&&(Q?Z.Z.invoke("GET","/api/v1/buckets/".concat(q,"/events")).then((function(e){var t=m()(e,"events",[]);_(!1),M(t||[])})).catch((function(e){_(!1),n((0,C.Ih)(e))})):_(!1))}),[O,n,q,Q]);var W=[{type:"delete",onClick:function(e){K(!0),G(e)}}];return(0,F.jsxs)(i.Fragment,{children:[V&&(0,F.jsx)(N,{deleteOpen:V,selectedBucket:q,bucketEvent:D,closeDeleteModalAndRefresh:function(e){K(!1),e&&_(!0)}}),v&&(0,F.jsx)(P,{open:v,selectedBucket:q,closeModalAndRefresh:function(){g(!1),_(!0)}}),(0,F.jsxs)(h.ZP,{container:!0,children:[(0,F.jsxs)(h.ZP,{item:!0,xs:12,className:t.actionsTray,children:[(0,F.jsx)(j.Z,{children:"Events"}),(0,F.jsx)(k.s,{scopes:[S.Ft.S3_PUT_BUCKET_NOTIFICATIONS,S.Ft.S3_PUT_ACTIONS,S.Ft.ADMIN_SERVER_INFO],resource:q,matchAll:!0,errorProps:{disabled:!0},children:(0,F.jsx)(E.Z,{tooltip:"Subscribe to Event",children:(0,F.jsx)(s.zx,{id:"Subscribe-bucket-event",onClick:function(){g(!0)},label:"Subscribe to Event",icon:(0,F.jsx)(f.Z,{}),variant:"callAction"})})})]}),(0,F.jsx)(h.ZP,{item:!0,xs:12,children:(0,F.jsx)(k.s,{scopes:[S.Ft.S3_GET_BUCKET_NOTIFICATIONS],resource:q,errorProps:{disabled:!0},children:(0,F.jsx)(x.Z,{itemActions:W,columns:[{label:"SQS",elementKey:"arn"},{label:"Events",elementKey:"events",renderFunction:function(e){return(0,F.jsx)(i.Fragment,{children:e.join(", ")})}},{label:"Prefix",elementKey:"prefix"},{label:"Suffix",elementKey:"suffix"}],isLoading:O,records:H,entityName:"Events",idField:"id",customPaperHeight:t.twHeight})})}),!O&&(0,F.jsxs)(h.ZP,{item:!0,xs:12,children:[(0,F.jsx)("br",{}),(0,F.jsx)(b.Z,{title:"Lambda Notifications",iconComponent:(0,F.jsx)(p.Z,{}),help:(0,F.jsxs)(i.Fragment,{children:["MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 Event Notifications.",(0,F.jsx)("br",{}),(0,F.jsx)("br",{}),"You can learn more at our"," ",(0,F.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noreferrer",children:"documentation"}),"."]})})]})]})]})}))},60680:function(e,t,n){"use strict";n(72791);var o=n(11135),r=n(25787),i=n(80184);t.Z=(0,r.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,n=e.children;return(0,i.jsx)("h1",{className:t.root,children:n})}))},26759:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");t.Z=c},70366:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");t.Z=c},97911:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");t.Z=c},94454:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var o=n(4942),r=n(63366),i=n(87462),c=n(72791),a=n(28182),s=n(94419),l=n(12065),d=n(97278),u=n(76189),m=n(80184),h=(0,u.Z)((0,m.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),f=(0,u.Z)((0,m.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),p=(0,u.Z)((0,m.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),v=n(14036),x=n(31402),Z=n(66934),b=n(75878),j=n(21217);function k(e){return(0,j.Z)("MuiCheckbox",e)}var S=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),g=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],C=(0,Z.ZP)(d.Z,{shouldForwardProp:function(e){return(0,Z.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.indeterminate&&t.indeterminate,"default"!==n.color&&t["color".concat((0,v.Z)(n.color))]]}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,i.Z)({color:(n.vars||n).palette.text.secondary},!r.disableRipple&&{"&:hover":{backgroundColor:n.vars?"rgba(".concat("default"===r.color?n.vars.palette.action.activeChannel:n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===r.color?n.palette.action.active:n.palette[r.color].main,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==r.color&&(t={},(0,o.Z)(t,"&.".concat(S.checked,", &.").concat(S.indeterminate),{color:(n.vars||n).palette[r.color].main}),(0,o.Z)(t,"&.".concat(S.disabled),{color:(n.vars||n).palette.action.disabled}),t))})),z=(0,m.jsx)(f,{}),I=(0,m.jsx)(h,{}),E=(0,m.jsx)(p,{}),F=c.forwardRef((function(e,t){var n,o,l=(0,x.Z)({props:e,name:"MuiCheckbox"}),d=l.checkedIcon,u=void 0===d?z:d,h=l.color,f=void 0===h?"primary":h,p=l.icon,Z=void 0===p?I:p,b=l.indeterminate,j=void 0!==b&&b,S=l.indeterminateIcon,F=void 0===S?E:S,N=l.inputProps,P=l.size,T=void 0===P?"medium":P,y=l.className,O=(0,r.Z)(l,g),_=j?F:Z,w=j?F:u,A=(0,i.Z)({},l,{color:f,indeterminate:j,size:T}),H=function(e){var t=e.classes,n=e.indeterminate,o=e.color,r={root:["root",n&&"indeterminate","color".concat((0,v.Z)(o))]},c=(0,s.Z)(r,k,t);return(0,i.Z)({},t,c)}(A);return(0,m.jsx)(C,(0,i.Z)({type:"checkbox",inputProps:(0,i.Z)({"data-indeterminate":j},N),icon:c.cloneElement(_,{fontSize:null!=(n=_.props.fontSize)?n:T}),checkedIcon:c.cloneElement(w,{fontSize:null!=(o=w.props.fontSize)?o:T}),ownerState:A,ref:t,className:(0,a.Z)(H.root,y)},O,{classes:H}))}))},26769:function(e,t,n){var o=n(39066),r=n(93629),i=n(43141);e.exports=function(e){return"string"==typeof e||!r(e)&&i(e)&&"[object String]"==o(e)}}}]);
-//# sourceMappingURL=1440.8750dde4.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1440.8750dde4.chunk.js.map b/portal-ui/build/static/js/1440.8750dde4.chunk.js.map
deleted file mode 100644
index 6810f2980..000000000
--- a/portal-ui/build/static/js/1440.8750dde4.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1440.8750dde4.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Buckets/BucketDetails/BucketEventsPanel.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/lodash/isString.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport AddIcon from \"../../../../icons/AddIcon\";\nimport LambdaIcon from \"../../../../icons/LambdaIcon\";\nimport { BucketEvent, BucketEventList } from \"../types\";\nimport {\n actionsTray,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../../common/api\";\n\nimport HelpBox from \"../../../../common/HelpBox\";\nimport PanelTitle from \"../../Common/PanelTitle/PanelTitle\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeleteEvent = withSuspense(React.lazy(() => import(\"./DeleteEvent\")));\nconst AddEvent = withSuspense(React.lazy(() => import(\"./AddEvent\")));\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...searchField,\n ...actionsTray,\n twHeight: {\n minHeight: 400,\n },\n });\n\ninterface IBucketEventsProps {\n classes: any;\n}\n\nconst BucketEventsPanel = ({ classes }: IBucketEventsProps) => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [addEventScreenOpen, setAddEventScreenOpen] = useState(false);\n const [loadingEvents, setLoadingEvents] = useState(true);\n const [records, setRecords] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedEvent, setSelectedEvent] = useState(null);\n\n const bucketName = params.bucketName || \"\";\n\n const displayEvents = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingEvents(true);\n }\n }, [loadingBucket, setLoadingEvents]);\n\n useEffect(() => {\n if (loadingEvents) {\n if (displayEvents) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/events`)\n .then((res: BucketEventList) => {\n const events = get(res, \"events\", []);\n setLoadingEvents(false);\n setRecords(events || []);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingEvents(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoadingEvents(false);\n }\n }\n }, [loadingEvents, dispatch, bucketName, displayEvents]);\n\n const eventsDisplay = (events: string[]) => {\n return {events.join(\", \")} ;\n };\n\n const confirmDeleteEvent = (evnt: BucketEvent) => {\n setDeleteOpen(true);\n setSelectedEvent(evnt);\n };\n\n const closeAddEventAndRefresh = () => {\n setAddEventScreenOpen(false);\n setLoadingEvents(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoadingEvents(true);\n }\n };\n\n const tableActions = [{ type: \"delete\", onClick: confirmDeleteEvent }];\n\n return (\n \n {deleteOpen && (\n \n )}\n {addEventScreenOpen && (\n \n )}\n\n \n \n Events \n \n \n {\n setAddEventScreenOpen(true);\n }}\n label={\"Subscribe to Event\"}\n icon={ }\n variant={\"callAction\"}\n />\n \n \n \n \n \n \n \n \n {!loadingEvents && (\n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to send\n notifications to supported external services on certain object\n or bucket events. MinIO supports bucket and object-level S3\n events similar to the Amazon S3 Event Notifications.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(BucketEventsPanel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n },\n });\n\ninterface IPanelTitle extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst PanelTitle = ({ classes, children }: IPanelTitle) => {\n return {children} ;\n};\n\nexport default withStyles(styles)(PanelTitle);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","DeleteEvent","withSuspense","React","AddEvent","searchField","actionsTray","twHeight","minHeight","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","useState","addEventScreenOpen","setAddEventScreenOpen","loadingEvents","setLoadingEvents","records","setRecords","deleteOpen","setDeleteOpen","selectedEvent","setSelectedEvent","bucketName","displayEvents","hasPermission","IAM_SCOPES","useEffect","api","then","res","events","get","catch","err","setErrorSnackMessage","tableActions","type","onClick","evnt","Fragment","selectedBucket","bucketEvent","closeDeleteModalAndRefresh","refresh","open","closeModalAndRefresh","scopes","resource","matchAll","errorProps","disabled","tooltip","id","label","icon","variant","itemActions","columns","elementKey","renderFunction","join","isLoading","entityName","idField","customPaperHeight","href","target","rel","padding","margin","children","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","name","overridesResolver","props","styles","ownerState","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","clsx","baseGetTag","isArray","isObjectLike","module","value"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1440.b5fbee60.chunk.js b/portal-ui/build/static/js/1440.b5fbee60.chunk.js
new file mode 100644
index 000000000..ea2133832
--- /dev/null
+++ b/portal-ui/build/static/js/1440.b5fbee60.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1440],{23804:function(e,t,n){"use strict";n(72791);var o=n(11135),r=n(25787),i=n(61889),c=n(80184);t.Z=(0,r.Z)((function(e){return(0,o.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,o=e.title,r=e.help;return(0,c.jsx)("div",{className:t.root,children:(0,c.jsxs)(i.ZP,{container:!0,children:[(0,c.jsxs)(i.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,o]}),(0,c.jsx)(i.ZP,{item:!0,xs:12,className:t.helpText,children:r})]})})}))},25702:function(e,t,n){"use strict";n.r(t);var o=n(29439),r=n(1413),i=n(72791),c=n(78687),a=n(57689),s=n(75952),l=n(11135),d=n(25787),u=n(26181),m=n.n(u),h=n(61889),f=n(23814),p=n(92983),v=n(81207),x=n(23804),Z=n(60680),b=n(38442),j=n(56087),S=n(75578),k=n(87995),g=n(9859),C=n(25469),I=n(27454),z=n(80184),E=(0,S.Z)(i.lazy((function(){return n.e(455).then(n.bind(n,80455))}))),T=(0,S.Z)(i.lazy((function(){return Promise.all([n.e(3801),n.e(1918),n.e(6172),n.e(2661)]).then(n.bind(n,82661))})));t.default=(0,d.Z)((function(e){return(0,l.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},f.qg),f.OR),{},{twHeight:{minHeight:400}}))}))((function(e){var t=e.classes,n=(0,C.TL)(),r=(0,a.UO)(),l=(0,c.v9)(g.HQ),d=(0,i.useState)(!1),u=(0,o.Z)(d,2),f=u[0],S=u[1],F=(0,i.useState)(!0),N=(0,o.Z)(F,2),P=N[0],_=N[1],y=(0,i.useState)([]),O=(0,o.Z)(y,2),A=O[0],w=O[1],H=(0,i.useState)(!1),M=(0,o.Z)(H,2),B=M[0],R=M[1],V=(0,i.useState)(null),K=(0,o.Z)(V,2),L=K[0],U=K[1],G=r.bucketName||"",D=(0,b.F)(G,[j.Ft.S3_GET_BUCKET_NOTIFICATIONS,j.Ft.S3_GET_ACTIONS]);(0,i.useEffect)((function(){l&&_(!0)}),[l,_]),(0,i.useEffect)((function(){P&&(D?v.Z.invoke("GET","/api/v1/buckets/".concat(G,"/events")).then((function(e){var t=m()(e,"events",[]);_(!1),w(t||[])})).catch((function(e){_(!1),n((0,k.Ih)(e))})):_(!1))}),[P,n,G,D]);var q=[{type:"delete",onClick:function(e){R(!0),U(e)}}];return(0,z.jsxs)(i.Fragment,{children:[B&&(0,z.jsx)(E,{deleteOpen:B,selectedBucket:G,bucketEvent:L,closeDeleteModalAndRefresh:function(e){R(!1),e&&_(!0)}}),f&&(0,z.jsx)(T,{open:f,selectedBucket:G,closeModalAndRefresh:function(){S(!1),_(!0)}}),(0,z.jsxs)(h.ZP,{container:!0,children:[(0,z.jsxs)(h.ZP,{item:!0,xs:12,className:t.actionsTray,children:[(0,z.jsx)(Z.Z,{children:"Events"}),(0,z.jsx)(b.s,{scopes:[j.Ft.S3_PUT_BUCKET_NOTIFICATIONS,j.Ft.S3_PUT_ACTIONS,j.Ft.ADMIN_SERVER_INFO],resource:G,matchAll:!0,errorProps:{disabled:!0},children:(0,z.jsx)(I.Z,{tooltip:"Subscribe to Event",children:(0,z.jsx)(s.zxk,{id:"Subscribe-bucket-event",onClick:function(){S(!0)},label:"Subscribe to Event",icon:(0,z.jsx)(s.dtP,{}),variant:"callAction"})})})]}),(0,z.jsx)(h.ZP,{item:!0,xs:12,children:(0,z.jsx)(b.s,{scopes:[j.Ft.S3_GET_BUCKET_NOTIFICATIONS,j.Ft.S3_GET_ACTIONS],resource:G,errorProps:{disabled:!0},children:(0,z.jsx)(p.Z,{itemActions:q,columns:[{label:"SQS",elementKey:"arn"},{label:"Events",elementKey:"events",renderFunction:function(e){return(0,z.jsx)(i.Fragment,{children:e.join(", ")})}},{label:"Prefix",elementKey:"prefix"},{label:"Suffix",elementKey:"suffix"}],isLoading:P,records:A,entityName:"Events",idField:"id",customPaperHeight:t.twHeight})})}),!P&&(0,z.jsxs)(h.ZP,{item:!0,xs:12,children:[(0,z.jsx)("br",{}),(0,z.jsx)(x.Z,{title:"Lambda Notifications",iconComponent:(0,z.jsx)(s.cCG,{}),help:(0,z.jsxs)(i.Fragment,{children:["MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 Event Notifications.",(0,z.jsx)("br",{}),(0,z.jsx)("br",{}),"You can learn more at our"," ",(0,z.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noreferrer",children:"documentation"}),"."]})})]})]})]})}))},60680:function(e,t,n){"use strict";n(72791);var o=n(11135),r=n(25787),i=n(80184);t.Z=(0,r.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,n=e.children;return(0,i.jsx)("h1",{className:t.root,children:n})}))},26759:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");t.Z=c},70366:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");t.Z=c},97911:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),c=(0,r.default)((0,i.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");t.Z=c},94454:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var o=n(4942),r=n(63366),i=n(87462),c=n(72791),a=n(28182),s=n(94419),l=n(12065),d=n(97278),u=n(76189),m=n(80184),h=(0,u.Z)((0,m.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),f=(0,u.Z)((0,m.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),p=(0,u.Z)((0,m.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),v=n(14036),x=n(31402),Z=n(66934),b=n(75878),j=n(21217);function S(e){return(0,j.Z)("MuiCheckbox",e)}var k=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),g=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],C=(0,Z.ZP)(d.Z,{shouldForwardProp:function(e){return(0,Z.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.indeterminate&&t.indeterminate,"default"!==n.color&&t["color".concat((0,v.Z)(n.color))]]}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,i.Z)({color:(n.vars||n).palette.text.secondary},!r.disableRipple&&{"&:hover":{backgroundColor:n.vars?"rgba(".concat("default"===r.color?n.vars.palette.action.activeChannel:n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===r.color?n.palette.action.active:n.palette[r.color].main,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==r.color&&(t={},(0,o.Z)(t,"&.".concat(k.checked,", &.").concat(k.indeterminate),{color:(n.vars||n).palette[r.color].main}),(0,o.Z)(t,"&.".concat(k.disabled),{color:(n.vars||n).palette.action.disabled}),t))})),I=(0,m.jsx)(f,{}),z=(0,m.jsx)(h,{}),E=(0,m.jsx)(p,{}),T=c.forwardRef((function(e,t){var n,o,l=(0,x.Z)({props:e,name:"MuiCheckbox"}),d=l.checkedIcon,u=void 0===d?I:d,h=l.color,f=void 0===h?"primary":h,p=l.icon,Z=void 0===p?z:p,b=l.indeterminate,j=void 0!==b&&b,k=l.indeterminateIcon,T=void 0===k?E:k,F=l.inputProps,N=l.size,P=void 0===N?"medium":N,_=l.className,y=(0,r.Z)(l,g),O=j?T:Z,A=j?T:u,w=(0,i.Z)({},l,{color:f,indeterminate:j,size:P}),H=function(e){var t=e.classes,n=e.indeterminate,o=e.color,r={root:["root",n&&"indeterminate","color".concat((0,v.Z)(o))]},c=(0,s.Z)(r,S,t);return(0,i.Z)({},t,c)}(w);return(0,m.jsx)(C,(0,i.Z)({type:"checkbox",inputProps:(0,i.Z)({"data-indeterminate":j},F),icon:c.cloneElement(O,{fontSize:null!=(n=O.props.fontSize)?n:P}),checkedIcon:c.cloneElement(A,{fontSize:null!=(o=A.props.fontSize)?o:P}),ownerState:w,ref:t,className:(0,a.Z)(H.root,_)},y,{classes:H}))}))},26769:function(e,t,n){var o=n(39066),r=n(93629),i=n(43141);e.exports=function(e){return"string"==typeof e||!r(e)&&i(e)&&"[object String]"==o(e)}}}]);
+//# sourceMappingURL=1440.b5fbee60.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1440.b5fbee60.chunk.js.map b/portal-ui/build/static/js/1440.b5fbee60.chunk.js.map
new file mode 100644
index 000000000..2dd063b38
--- /dev/null
+++ b/portal-ui/build/static/js/1440.b5fbee60.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1440.b5fbee60.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Buckets/BucketDetails/BucketEventsPanel.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/lodash/isString.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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { AddIcon, Button, LambdaIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { BucketEvent, BucketEventList } from \"../types\";\nimport {\n actionsTray,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../../common/api\";\n\nimport HelpBox from \"../../../../common/HelpBox\";\nimport PanelTitle from \"../../Common/PanelTitle/PanelTitle\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeleteEvent = withSuspense(React.lazy(() => import(\"./DeleteEvent\")));\nconst AddEvent = withSuspense(React.lazy(() => import(\"./AddEvent\")));\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...searchField,\n ...actionsTray,\n twHeight: {\n minHeight: 400,\n },\n });\n\ninterface IBucketEventsProps {\n classes: any;\n}\n\nconst BucketEventsPanel = ({ classes }: IBucketEventsProps) => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [addEventScreenOpen, setAddEventScreenOpen] = useState(false);\n const [loadingEvents, setLoadingEvents] = useState(true);\n const [records, setRecords] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedEvent, setSelectedEvent] = useState(null);\n\n const bucketName = params.bucketName || \"\";\n\n const displayEvents = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingEvents(true);\n }\n }, [loadingBucket, setLoadingEvents]);\n\n useEffect(() => {\n if (loadingEvents) {\n if (displayEvents) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/events`)\n .then((res: BucketEventList) => {\n const events = get(res, \"events\", []);\n setLoadingEvents(false);\n setRecords(events || []);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingEvents(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoadingEvents(false);\n }\n }\n }, [loadingEvents, dispatch, bucketName, displayEvents]);\n\n const eventsDisplay = (events: string[]) => {\n return {events.join(\", \")} ;\n };\n\n const confirmDeleteEvent = (evnt: BucketEvent) => {\n setDeleteOpen(true);\n setSelectedEvent(evnt);\n };\n\n const closeAddEventAndRefresh = () => {\n setAddEventScreenOpen(false);\n setLoadingEvents(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoadingEvents(true);\n }\n };\n\n const tableActions = [{ type: \"delete\", onClick: confirmDeleteEvent }];\n\n return (\n \n {deleteOpen && (\n \n )}\n {addEventScreenOpen && (\n \n )}\n\n \n \n Events \n \n \n {\n setAddEventScreenOpen(true);\n }}\n label={\"Subscribe to Event\"}\n icon={ }\n variant={\"callAction\"}\n />\n \n \n \n \n \n \n \n \n {!loadingEvents && (\n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to send\n notifications to supported external services on certain object\n or bucket events. MinIO supports bucket and object-level S3\n events similar to the Amazon S3 Event Notifications.\n \n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(BucketEventsPanel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n },\n });\n\ninterface IPanelTitle extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst PanelTitle = ({ classes, children }: IPanelTitle) => {\n return {children} ;\n};\n\nexport default withStyles(styles)(PanelTitle);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","DeleteEvent","withSuspense","React","AddEvent","searchField","actionsTray","twHeight","minHeight","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","useState","addEventScreenOpen","setAddEventScreenOpen","loadingEvents","setLoadingEvents","records","setRecords","deleteOpen","setDeleteOpen","selectedEvent","setSelectedEvent","bucketName","displayEvents","hasPermission","IAM_SCOPES","useEffect","api","then","res","events","get","catch","err","setErrorSnackMessage","tableActions","type","onClick","evnt","Fragment","selectedBucket","bucketEvent","closeDeleteModalAndRefresh","refresh","open","closeModalAndRefresh","scopes","resource","matchAll","errorProps","disabled","tooltip","id","label","icon","variant","itemActions","columns","elementKey","renderFunction","join","isLoading","entityName","idField","customPaperHeight","href","target","rel","padding","margin","children","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","name","overridesResolver","props","styles","ownerState","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","clsx","baseGetTag","isArray","isObjectLike","module","value"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1501.2b23a1c6.chunk.js b/portal-ui/build/static/js/1501.2b23a1c6.chunk.js
deleted file mode 100644
index 55733c907..000000000
--- a/portal-ui/build/static/js/1501.2b23a1c6.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1501],{27331:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var o=n(29439),a=n(1413),r=n(72791),c=n(78687),i=n(57689),s=n(11135),l=n(25787),d=n(23814),u=n(45248),m=n(81207),p=n(92983),f=n(25469),h=n(51691),v=n(21435),Z=n(61889),x=n(9505),b=n(23508),j=n(56096),k=n(87995),C=n(80184),y=function(e){var t=e.deleteOpen,n=e.selectedPod,a=e.closeDeleteModalAndRefresh,c=(0,f.TL)(),i=(0,r.useState)(""),s=(0,o.Z)(i,2),l=s[0],d=s[1],u=(0,x.Z)((function(){return a(!0)}),(function(e){return c((0,k.Ih)(e))})),m=(0,o.Z)(u,2),p=m[0],y=m[1];return(0,C.jsx)(b.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:t,titleIcon:(0,C.jsx)(j.NvT,{}),isLoading:p,onConfirm:function(){l===n.name?y("DELETE","/api/v1/namespaces/".concat(n.namespace,"/tenants/").concat(n.tenant,"/pods/").concat(n.name)):(0,k.Ih)({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return a(!1)},confirmButtonProps:{disabled:l!==n.name||p},confirmationContent:(0,C.jsxs)(h.Z,{children:["To continue please type ",(0,C.jsx)("b",{children:n.name})," in the box.",(0,C.jsx)(Z.ZP,{item:!0,xs:12,children:(0,C.jsx)(v.Z,{id:"retype-pod",name:"retype-pod",onChange:function(e){d(e.target.value)},label:"",value:l})})]})})},g=n(27391),P=n(63466),z=n(74900),S=(0,l.Z)((function(e){return(0,s.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},d.oZ),d.VX),(0,d.Bz)(e.spacing(4))))}))((function(e){var t=e.classes,n=(0,f.TL)(),a=(0,i.s0)(),s=(0,i.UO)(),l=s.tenantName,d=s.tenantNamespace,h=(0,c.v9)((function(e){return e.tenants.loadingTenant})),v=(0,r.useState)([]),x=(0,o.Z)(v,2),b=x[0],j=x[1],S=(0,r.useState)(!0),w=(0,o.Z)(S,2),I=w[0],N=w[1],E=(0,r.useState)(!1),M=(0,o.Z)(E,2),T=M[0],D=M[1],L=(0,r.useState)(null),V=(0,o.Z)(L,2),H=V[0],O=V[1],A=(0,r.useState)(""),B=(0,o.Z)(A,2),F=B[0],R=B[1],K=b.filter((function(e){return e.name.toLowerCase().includes(F.toLowerCase())})),U=[{type:"view",onClick:function(e){a("/namespaces/".concat(d||"","/tenants/").concat(l||"","/pods/").concat(e.name))}},{type:"delete",onClick:function(e){e.tenant=l,e.namespace=d,O(e),D(!0)}}];return(0,r.useEffect)((function(){h&&N(!0)}),[h]),(0,r.useEffect)((function(){I&&m.Z.invoke("GET","/api/v1/namespaces/".concat(d||"","/tenants/").concat(l||"","/pods")).then((function(e){for(var t=0;t .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n}: IDeletePod) => {\n const dispatch = useAppDispatch();\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePod;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\n\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid, InputAdornment, TextField } from \"@mui/material\";\nimport SearchIcon from \"../../../../icons/SearchIcon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\ninterface IPodsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({ classes }: IPodsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { tenantName, tenantNamespace } = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant\n );\n\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n const [filter, setFilter] = useState(\"\");\n\n const podViewAction = (pod: IPodListElement) => {\n navigate(\n `/namespaces/${tenantNamespace || \"\"}/tenants/${tenantName || \"\"}/pods/${\n pod.name\n }`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const filteredRecords: IPodListElement[] = pods.filter((elementItem) =>\n elementItem.name.toLowerCase().includes(filter.toLowerCase())\n );\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace || \"\"}/tenants/${\n tenantName || \"\"\n }/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n })\n );\n });\n }\n }, [loadingPods, tenantName, tenantNamespace, dispatch]);\n\n return (\n \n {deleteOpen && (\n \n )}\n Pods \n \n \n \n \n ),\n }}\n onChange={(e) => {\n setFilter(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={filteredRecords}\n itemActions={podTableActions}\n entityName=\"Pods\"\n idField=\"name\"\n />\n \n \n );\n};\n\nexport default withStyles(styles)(PodsSummary);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["deleteOpen","selectedPod","closeDeleteModalAndRefresh","dispatch","useAppDispatch","useState","retypePod","setRetypePod","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","ConfirmDialog","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","name","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","DialogContentText","Grid","item","xs","InputBoxWrapper","id","onChange","event","target","value","label","withStyles","theme","createStyles","tenantDetailsStyles","tableStyles","containerForHeader","spacing","classes","navigate","useNavigate","useParams","tenantName","tenantNamespace","loadingTenant","useSelector","state","tenants","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","filter","setFilter","filteredRecords","elementItem","toLowerCase","includes","podTableActions","type","onClick","pod","useEffect","api","then","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","catch","Fragment","reloadData","className","sectionTitle","actionsTray","TextField","placeholder","searchField","InputProps","disableUnderline","startAdornment","InputAdornment","position","SearchIcon","e","variant","tableBlock","TableWrapper","columns","elementKey","width","renderFunction","input","records","itemActions","entityName","idField","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","props","styles","ownerState","root","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","backgroundColor","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","React","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","icon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","fontSize","clsx","baseGetTag","isArray","isObjectLike","module"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1501.e543ab00.chunk.js b/portal-ui/build/static/js/1501.e543ab00.chunk.js
new file mode 100644
index 000000000..44ae83ceb
--- /dev/null
+++ b/portal-ui/build/static/js/1501.e543ab00.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1501],{27331:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return z}});var o=n(29439),a=n(1413),r=n(72791),c=n(78687),i=n(57689),s=n(11135),l=n(25787),d=n(23814),u=n(45248),m=n(81207),p=n(92983),f=n(25469),h=n(51691),v=n(21435),Z=n(61889),x=n(9505),b=n(23508),j=n(75952),k=n(87995),C=n(80184),y=function(e){var t=e.deleteOpen,n=e.selectedPod,a=e.closeDeleteModalAndRefresh,c=(0,f.TL)(),i=(0,r.useState)(""),s=(0,o.Z)(i,2),l=s[0],d=s[1],u=(0,x.Z)((function(){return a(!0)}),(function(e){return c((0,k.Ih)(e))})),m=(0,o.Z)(u,2),p=m[0],y=m[1];return(0,C.jsx)(b.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:t,titleIcon:(0,C.jsx)(j.NvT,{}),isLoading:p,onConfirm:function(){l===n.name?y("DELETE","/api/v1/namespaces/".concat(n.namespace,"/tenants/").concat(n.tenant,"/pods/").concat(n.name)):(0,k.Ih)({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return a(!1)},confirmButtonProps:{disabled:l!==n.name||p},confirmationContent:(0,C.jsxs)(h.Z,{children:["To continue please type ",(0,C.jsx)("b",{children:n.name})," in the box.",(0,C.jsx)(Z.ZP,{item:!0,xs:12,children:(0,C.jsx)(v.Z,{id:"retype-pod",name:"retype-pod",onChange:function(e){d(e.target.value)},label:"",value:l})})]})})},g=n(27391),P=n(63466),z=(0,l.Z)((function(e){return(0,s.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},d.oZ),d.VX),(0,d.Bz)(e.spacing(4))))}))((function(e){var t=e.classes,n=(0,f.TL)(),a=(0,i.s0)(),s=(0,i.UO)(),l=s.tenantName,d=s.tenantNamespace,h=(0,c.v9)((function(e){return e.tenants.loadingTenant})),v=(0,r.useState)([]),x=(0,o.Z)(v,2),b=x[0],z=x[1],S=(0,r.useState)(!0),w=(0,o.Z)(S,2),I=w[0],M=w[1],N=(0,r.useState)(!1),E=(0,o.Z)(N,2),T=E[0],D=E[1],L=(0,r.useState)(null),V=(0,o.Z)(L,2),H=V[0],O=V[1],A=(0,r.useState)(""),B=(0,o.Z)(A,2),F=B[0],R=B[1],K=b.filter((function(e){return e.name.toLowerCase().includes(F.toLowerCase())})),U=[{type:"view",onClick:function(e){a("/namespaces/".concat(d||"","/tenants/").concat(l||"","/pods/").concat(e.name))}},{type:"delete",onClick:function(e){e.tenant=l,e.namespace=d,O(e),D(!0)}}];return(0,r.useEffect)((function(){h&&M(!0)}),[h]),(0,r.useEffect)((function(){I&&m.Z.invoke("GET","/api/v1/namespaces/".concat(d||"","/tenants/").concat(l||"","/pods")).then((function(e){for(var t=0;t .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n}: IDeletePod) => {\n const dispatch = useAppDispatch();\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePod;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\n\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid, InputAdornment, TextField } from \"@mui/material\";\nimport { SearchIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\ninterface IPodsSummary {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({ classes }: IPodsSummary) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { tenantName, tenantNamespace } = useParams();\n\n const loadingTenant = useSelector(\n (state: AppState) => state.tenants.loadingTenant\n );\n\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n const [filter, setFilter] = useState(\"\");\n\n const podViewAction = (pod: IPodListElement) => {\n navigate(\n `/namespaces/${tenantNamespace || \"\"}/tenants/${tenantName || \"\"}/pods/${\n pod.name\n }`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const filteredRecords: IPodListElement[] = pods.filter((elementItem) =>\n elementItem.name.toLowerCase().includes(filter.toLowerCase())\n );\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace || \"\"}/tenants/${\n tenantName || \"\"\n }/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n })\n );\n });\n }\n }, [loadingPods, tenantName, tenantNamespace, dispatch]);\n\n return (\n \n {deleteOpen && (\n \n )}\n Pods \n \n \n \n \n ),\n }}\n onChange={(e) => {\n setFilter(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={filteredRecords}\n itemActions={podTableActions}\n entityName=\"Pods\"\n idField=\"name\"\n />\n \n \n );\n};\n\nexport default withStyles(styles)(PodsSummary);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["deleteOpen","selectedPod","closeDeleteModalAndRefresh","dispatch","useAppDispatch","useState","retypePod","setRetypePod","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","ConfirmDialog","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","name","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","DialogContentText","Grid","item","xs","InputBoxWrapper","id","onChange","event","target","value","label","withStyles","theme","createStyles","tenantDetailsStyles","tableStyles","containerForHeader","spacing","classes","navigate","useNavigate","useParams","tenantName","tenantNamespace","loadingTenant","useSelector","state","tenants","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","filter","setFilter","filteredRecords","elementItem","toLowerCase","includes","podTableActions","type","onClick","pod","useEffect","api","then","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","catch","Fragment","reloadData","className","sectionTitle","actionsTray","TextField","placeholder","searchField","InputProps","disableUnderline","startAdornment","InputAdornment","position","e","variant","tableBlock","TableWrapper","columns","elementKey","width","renderFunction","input","records","itemActions","entityName","idField","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","props","styles","ownerState","root","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","backgroundColor","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","React","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","icon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","fontSize","clsx","baseGetTag","isArray","isObjectLike","module"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1507.979cb39c.chunk.js b/portal-ui/build/static/js/1507.979cb39c.chunk.js
new file mode 100644
index 000000000..66c5da724
--- /dev/null
+++ b/portal-ui/build/static/js/1507.979cb39c.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1507],{92217:function(e,n,t){var a=t(1413),i=t(72791),o=t(61889),r=t(30829),s=t(20068),l=t(64554),c=t(11135),d=t(25787),u=t(75952),x=t(23814),m=t(78029),p=t.n(m),f=t(90932),h=t(27454),g=t(80184);n.Z=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)({},x.YI))}))((function(e){var n=e.value,t=e.label,a=void 0===t?"":t,c=e.tooltip,d=void 0===c?"":c,x=e.mode,m=void 0===x?"json":x,j=e.classes,v=e.onBeforeChange,Z=(e.readOnly,e.editorHeight),b=void 0===Z?"250px":Z;return(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(o.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,g.jsxs)(r.Z,{className:j.inputLabel,children:[(0,g.jsx)("span",{children:a}),""!==d&&(0,g.jsx)("div",{className:j.tooltipContainer,children:(0,g.jsx)(s.Z,{title:d,placement:"top-start",children:(0,g.jsx)("div",{className:j.tooltip,children:(0,g.jsx)(u.byK,{})})})})]})}),(0,g.jsx)(o.ZP,{item:!0,xs:12,style:{maxHeight:b,overflow:"auto",border:"1px solid #eaeaea"},children:(0,g.jsx)(f.Z,{value:n,language:m,onChange:function(e){v(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:b||"initial",color:"#000000"}})}),(0,g.jsx)(o.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,g.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,g.jsx)(h.Z,{tooltip:"Copy to Clipboard",children:(0,g.jsx)(p(),{text:n,children:(0,g.jsx)(u.zxk,{type:"button",id:"copy-code-mirror",icon:(0,g.jsx)(u.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},82859:function(e,n,t){t.r(n);var a=t(29439),i=t(1413),o=t(72791),r=t(78687),s=t(57689),l=t(40986),c=t(75952),d=t(61889),u=t(11135),x=t(25787),m=t(81207),p=t(23814),f=t(92217),h=t(87995),g=t(25469),j=t(82295),v=t(50896),Z=t(80184);n.default=(0,x.Z)((function(e){return(0,u.Z)((0,i.Z)((0,i.Z)({errorState:{color:"#b53b4b",fontSize:14,fontWeight:"bold"},codeMirrorContainer:{marginBottom:20,paddingLeft:15,"& label":{marginBottom:".5rem"},"& label + div":{display:"none"}}},p.ID),p.YI))}))((function(e){var n=e.classes,t=(0,g.TL)(),i=(0,s.s0)(),u=(0,r.v9)((function(e){return e.tenants.currentTenant})),x=(0,r.v9)((function(e){return e.tenants.currentNamespace})),p=(0,o.useState)(!1),b=(0,a.Z)(p,2),y=b[0],C=b[1],S=(0,o.useState)(!1),k=(0,a.Z)(S,2),P=k[0],T=k[1],z=(0,o.useState)(""),L=(0,a.Z)(z,2),M=L[0],w=L[1],B=(0,o.useState)(""),F=(0,a.Z)(B,2),I=F[0],N=F[1];(0,o.useEffect)((function(){m.Z.invoke("GET","/api/v1/namespaces/".concat(x,"/tenants/").concat(u,"/yaml")).then((function(e){T(!1),w(e.yaml)})).catch((function(e){T(!1),t((0,h.zb)(e))}))}),[u,x,t]),(0,o.useEffect)((function(){}),[]);var H=""!==M.trim();return(0,Z.jsxs)(o.Fragment,{children:[y||P&&(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(l.Z,{})}),""!==I&&(0,Z.jsx)("div",{className:n.errorState,children:I}),!P&&(0,Z.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),y||(C(!0),N(""),m.Z.invoke("PUT","/api/v1/namespaces/".concat(x,"/tenants/").concat(u,"/yaml"),{yaml:M}).then((function(e){C(!1),t((0,j.v)()),N(""),i("/namespaces/".concat(x,"/tenants/").concat(u,"/summary"))})).catch((function(e){C(!1),N(e.errorMessage)})))},children:(0,Z.jsxs)(d.ZP,{container:!0,children:[(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(v.Z,{children:"Tenant Specification"})}),(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(f.Z,{value:M,mode:"yaml",onBeforeChange:function(e,n,t){w(t)},editorHeight:"550px"})}),(0,Z.jsxs)(d.ZP,{item:!0,xs:12,style:{display:"flex",justifyContent:"flex-end",paddingTop:16},children:[(0,Z.jsx)(c.zxk,{id:"cancel-tenant-yaml",type:"button",variant:"regular",disabled:y,onClick:function(){i("/namespaces/".concat(x,"/tenants/").concat(u,"/summary"))},label:"Cancel"}),(0,Z.jsx)(c.zxk,{id:"save-tenant-yaml",type:"submit",variant:"callAction",disabled:y||!H,style:{marginLeft:8},label:"Save"})]})]})})]})}))}}]);
+//# sourceMappingURL=1507.979cb39c.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1507.979cb39c.chunk.js.map b/portal-ui/build/static/js/1507.979cb39c.chunk.js.map
new file mode 100644
index 000000000..409ae24d4
--- /dev/null
+++ b/portal-ui/build/static/js/1507.979cb39c.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1507.979cb39c.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Tenants/TenantDetails/TenantYAML.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"mds\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../common/api\";\nimport {\n fieldBasic,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport SectionTitle from \"../../Common/SectionTitle\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorState: {\n color: \"#b53b4b\",\n fontSize: 14,\n fontWeight: \"bold\",\n },\n codeMirrorContainer: {\n marginBottom: 20,\n paddingLeft: 15,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...modalStyleUtils,\n ...fieldBasic,\n });\n\ninterface ITenantYAML {\n yaml: string;\n}\n\ninterface ITenantYAMLProps {\n classes: any;\n}\n\nconst TenantYAML = ({ classes }: ITenantYAMLProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const tenant = useSelector((state: AppState) => state.tenants.currentTenant);\n const namespace = useSelector(\n (state: AppState) => state.tenants.currentNamespace\n );\n\n const [addLoading, setAddLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [tenantYaml, setTenantYaml] = useState(\"\");\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const updateTenant = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n setErrorMessage(\"\");\n api\n .invoke(\"PUT\", `/api/v1/namespaces/${namespace}/tenants/${tenant}/yaml`, {\n yaml: tenantYaml,\n })\n .then((res) => {\n setAddLoading(false);\n dispatch(getTenantAsync());\n setErrorMessage(\"\");\n navigate(`/namespaces/${namespace}/tenants/${tenant}/summary`);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setErrorMessage(err.errorMessage);\n });\n };\n\n useEffect(() => {\n api\n .invoke(\"GET\", `/api/v1/namespaces/${namespace}/tenants/${tenant}/yaml`)\n .then((res: ITenantYAML) => {\n setLoading(false);\n setTenantYaml(res.yaml);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [tenant, namespace, dispatch]);\n\n useEffect(() => {}, []);\n\n const validSave = tenantYaml.trim() !== \"\";\n\n return (\n \n {addLoading ||\n (loading && (\n \n \n \n ))}\n {errorMessage !== \"\" && (\n {errorMessage}
\n )}\n\n {!loading && (\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(TenantYAML);\n"],"names":["withStyles","theme","createStyles","fieldBasic","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","item","xs","sx","marginBottom","className","inputLabel","tooltipContainer","title","placement","style","maxHeight","overflow","border","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","text","type","icon","variant","errorState","fontWeight","codeMirrorContainer","paddingLeft","modalStyleUtils","dispatch","useAppDispatch","navigate","useNavigate","tenant","useSelector","state","tenants","currentTenant","namespace","currentNamespace","useState","addLoading","setAddLoading","loading","setLoading","tenantYaml","setTenantYaml","errorMessage","setErrorMessage","useEffect","api","then","res","yaml","catch","err","setModalErrorSnackMessage","validSave","trim","Fragment","noValidate","autoComplete","onSubmit","e","preventDefault","getTenantAsync","container","editor","data","paddingTop","disabled","onClick"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1507.a4807651.chunk.js b/portal-ui/build/static/js/1507.a4807651.chunk.js
deleted file mode 100644
index 5f70708e1..000000000
--- a/portal-ui/build/static/js/1507.a4807651.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1507],{92217:function(e,n,t){var a=t(1413),i=t(72791),o=t(61889),r=t(30829),s=t(20068),l=t(64554),c=t(11135),d=t(25787),u=t(84570),x=t(23814),m=t(56096),p=t(75952),f=t(78029),h=t.n(f),g=t(90932),j=t(27454),v=t(80184);n.Z=(0,d.Z)((function(e){return(0,c.Z)((0,a.Z)({},x.YI))}))((function(e){var n=e.value,t=e.label,a=void 0===t?"":t,c=e.tooltip,d=void 0===c?"":c,x=e.mode,f=void 0===x?"json":x,Z=e.classes,b=e.onBeforeChange,y=(e.readOnly,e.editorHeight),C=void 0===y?"250px":y;return(0,v.jsxs)(i.Fragment,{children:[(0,v.jsx)(o.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,v.jsxs)(r.Z,{className:Z.inputLabel,children:[(0,v.jsx)("span",{children:a}),""!==d&&(0,v.jsx)("div",{className:Z.tooltipContainer,children:(0,v.jsx)(s.Z,{title:d,placement:"top-start",children:(0,v.jsx)("div",{className:Z.tooltip,children:(0,v.jsx)(u.Z,{})})})})]})}),(0,v.jsx)(o.ZP,{item:!0,xs:12,style:{maxHeight:C,overflow:"auto",border:"1px solid #eaeaea"},children:(0,v.jsx)(g.Z,{value:n,language:f,onChange:function(e){b(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:C||"initial",color:"#000000"}})}),(0,v.jsx)(o.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,v.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,v.jsx)(j.Z,{tooltip:"Copy to Clipboard",children:(0,v.jsx)(h(),{text:n,children:(0,v.jsx)(p.zx,{type:"button",id:"copy-code-mirror",icon:(0,v.jsx)(m.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},82859:function(e,n,t){t.r(n);var a=t(29439),i=t(1413),o=t(72791),r=t(78687),s=t(57689),l=t(40986),c=t(75952),d=t(61889),u=t(11135),x=t(25787),m=t(81207),p=t(23814),f=t(92217),h=t(87995),g=t(25469),j=t(82295),v=t(50896),Z=t(80184);n.default=(0,x.Z)((function(e){return(0,u.Z)((0,i.Z)((0,i.Z)({errorState:{color:"#b53b4b",fontSize:14,fontWeight:"bold"},codeMirrorContainer:{marginBottom:20,paddingLeft:15,"& label":{marginBottom:".5rem"},"& label + div":{display:"none"}}},p.ID),p.YI))}))((function(e){var n=e.classes,t=(0,g.TL)(),i=(0,s.s0)(),u=(0,r.v9)((function(e){return e.tenants.currentTenant})),x=(0,r.v9)((function(e){return e.tenants.currentNamespace})),p=(0,o.useState)(!1),b=(0,a.Z)(p,2),y=b[0],C=b[1],S=(0,o.useState)(!1),k=(0,a.Z)(S,2),P=k[0],T=k[1],z=(0,o.useState)(""),L=(0,a.Z)(z,2),M=L[0],w=L[1],B=(0,o.useState)(""),F=(0,a.Z)(B,2),I=F[0],N=F[1];(0,o.useEffect)((function(){m.Z.invoke("GET","/api/v1/namespaces/".concat(x,"/tenants/").concat(u,"/yaml")).then((function(e){T(!1),w(e.yaml)})).catch((function(e){T(!1),t((0,h.zb)(e))}))}),[u,x,t]),(0,o.useEffect)((function(){}),[]);var H=""!==M.trim();return(0,Z.jsxs)(o.Fragment,{children:[y||P&&(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(l.Z,{})}),""!==I&&(0,Z.jsx)("div",{className:n.errorState,children:I}),!P&&(0,Z.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),y||(C(!0),N(""),m.Z.invoke("PUT","/api/v1/namespaces/".concat(x,"/tenants/").concat(u,"/yaml"),{yaml:M}).then((function(e){C(!1),t((0,j.v)()),N(""),i("/namespaces/".concat(x,"/tenants/").concat(u,"/summary"))})).catch((function(e){C(!1),N(e.errorMessage)})))},children:(0,Z.jsxs)(d.ZP,{container:!0,children:[(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(v.Z,{children:"Tenant Specification"})}),(0,Z.jsx)(d.ZP,{item:!0,xs:12,children:(0,Z.jsx)(f.Z,{value:M,mode:"yaml",onBeforeChange:function(e,n,t){w(t)},editorHeight:"550px"})}),(0,Z.jsxs)(d.ZP,{item:!0,xs:12,style:{display:"flex",justifyContent:"flex-end",paddingTop:16},children:[(0,Z.jsx)(c.zx,{id:"cancel-tenant-yaml",type:"button",variant:"regular",disabled:y,onClick:function(){i("/namespaces/".concat(x,"/tenants/").concat(u,"/summary"))},label:"Cancel"}),(0,Z.jsx)(c.zx,{id:"save-tenant-yaml",type:"submit",variant:"callAction",disabled:y||!H,style:{marginLeft:8},label:"Save"})]})]})})]})}))}}]);
-//# sourceMappingURL=1507.a4807651.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1507.a4807651.chunk.js.map b/portal-ui/build/static/js/1507.a4807651.chunk.js.map
deleted file mode 100644
index 20837762c..000000000
--- a/portal-ui/build/static/js/1507.a4807651.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1507.a4807651.chunk.js","mappings":"ySAgJA,KAAeA,EAAAA,EAAAA,IAtGA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,IACF,GAmGL,EAjG0B,SAAH,GASF,IARnBC,EAAK,EAALA,MAAM,EAAD,EACLC,MAAAA,OAAK,MAAG,GAAE,MACVC,QAAAA,OAAO,MAAG,GAAE,MACZC,KAAAA,OAAI,MAAG,OAAM,EACbC,EAAO,EAAPA,QACAC,EAAc,EAAdA,eACgB,GADF,EACdC,SAAgB,EAChBC,cAAAA,OAAY,MAAG,QAAO,EAEtB,OACE,UAAC,WAAc,YACb,SAAC,KAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAI,CAAEC,aAAc,QAAS,UAC9C,UAAC,IAAU,CAACC,UAAWR,EAAQS,WAAW,WACxC,0BAAOZ,IACM,KAAZC,IACC,gBAAKU,UAAWR,EAAQU,iBAAiB,UACvC,SAAC,IAAO,CAACC,MAAOb,EAASc,UAAU,YAAW,UAC5C,gBAAKJ,UAAWR,EAAQF,QAAQ,UAC9B,SAAC,IAAQ,gBAQrB,SAAC,KAAI,CACHM,MAAI,EACJC,GAAI,GACJQ,MAAO,CACLC,UAAWX,EACXY,SAAU,OACVC,OAAQ,qBACR,UAEF,SAAC,IAAU,CACTpB,MAAOA,EACPqB,SAAUlB,EACVmB,SAAU,SAACC,GACTlB,EAAe,KAAM,KAAMkB,EAAIC,OAAOxB,MACxC,EACAyB,GAAI,eACJC,QAAS,GACTT,MAAO,CACLU,SAAU,GACVC,gBAAiB,UACjBC,WACE,+EACFC,UAAWvB,GAAgB,UAC3BwB,MAAO,gBAIb,SAAC,KAAI,CACHvB,MAAI,EACJC,GAAI,GACJC,GAAI,CACFsB,WAAY,UACZZ,OAAQ,oBACRa,UAAW,GACX,UAEF,SAAC,IAAG,CACFvB,GAAI,CACFwB,QAAS,OACTC,WAAY,SACZT,QAAS,MACTU,aAAc,MACdC,eAAgB,WAChB,WAAY,CACVC,OAAQ,OACRC,MAAO,OACPb,QAAS,MACT,aAAc,CACZc,WAAY,OAGhB,UAEF,SAAC,IAAc,CAACtC,QAAS,oBAAoB,UAC3C,SAAC,IAAe,CAACuC,KAAMzC,EAAM,UAC3B,SAAC,KAAM,CACL0C,KAAM,SACNjB,GAAI,mBACJkB,MAAM,SAAC,MAAQ,IACfZ,MAAO,UACPa,QAAS,sBAQzB,G,wOCiDA,WAAehD,EAAAA,EAAAA,IA1JA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,gBACX+C,WAAY,CACVd,MAAO,UACPJ,SAAU,GACVmB,WAAY,QAEdC,oBAAqB,CACnBpC,aAAc,GACdqC,YAAa,GACb,UAAW,CACTrC,aAAc,SAEhB,gBAAiB,CACfuB,QAAS,UAGVe,EAAAA,IACAlD,EAAAA,IACF,GAuIL,EA7HmB,SAAH,GAAuC,IAAjCK,EAAO,EAAPA,QACd8C,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAEXC,GAASC,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,QAAQC,aAAa,IACrEC,GAAYJ,EAAAA,EAAAA,KAChB,SAACC,GAAe,OAAKA,EAAMC,QAAQG,gBAAgB,IAGrD,GAAoCC,EAAAA,EAAAA,WAAkB,GAAM,eAArDC,EAAU,KAAEC,EAAa,KAChC,GAA8BF,EAAAA,EAAAA,WAAkB,GAAM,eAA/CG,EAAO,KAAEC,EAAU,KAC1B,GAAoCJ,EAAAA,EAAAA,UAAiB,IAAG,eAAjDK,EAAU,KAAEC,EAAa,KAChC,GAAwCN,EAAAA,EAAAA,UAAiB,IAAG,eAArDO,EAAY,KAAEC,EAAe,MAyBpCC,EAAAA,EAAAA,YAAU,WACRC,EAAAA,EAAAA,OACU,MAAM,sBAAD,OAAwBZ,EAAS,oBAAYL,EAAM,UAC/DkB,MAAK,SAACC,GACLR,GAAW,GACXE,EAAcM,EAAIC,KACpB,IACCC,OAAM,SAACC,GACNX,GAAW,GACXf,GAAS2B,EAAAA,EAAAA,IAA0BD,GACrC,GACJ,GAAG,CAACtB,EAAQK,EAAWT,KAEvBoB,EAAAA,EAAAA,YAAU,WAAO,GAAG,IAEpB,IAAMQ,EAAkC,KAAtBZ,EAAWa,OAE7B,OACE,UAAC,EAAAC,SAAQ,WACNlB,GACEE,IACC,SAAC,KAAI,CAACxD,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAc,MAGH,KAAjB2D,IACC,gBAAKxD,UAAWR,EAAQyC,WAAW,SAAEuB,KAGrCJ,IACA,iBACEiB,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,GACIA,EAxDfC,iBACFvB,IAGJC,GAAc,GACdM,EAAgB,IAChBE,EAAAA,EAAAA,OACU,MAAM,sBAAD,OAAwBZ,EAAS,oBAAYL,EAAM,SAAS,CACvEoB,KAAMR,IAEPM,MAAK,SAACC,GACLV,GAAc,GACdb,GAASoC,EAAAA,EAAAA,MACTjB,EAAgB,IAChBjB,EAAS,eAAD,OAAgBO,EAAS,oBAAYL,EAAM,YACrD,IACCqB,OAAM,SAACC,GACNb,GAAc,GACdM,EAAgBO,EAAIR,aACtB,IAsCI,EAAE,UAEF,UAAC,KAAI,CAACmB,WAAS,aACb,SAAC,KAAI,CAAC/E,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAY,UAAC,4BAEhB,SAAC,KAAI,CAACD,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAiB,CAChBT,MAAOkE,EACP/D,KAAM,OACNE,eAAgB,SAACmF,EAAQC,EAAMzF,GAC7BmE,EAAcnE,EAChB,EACAO,aAAc,aAGlB,UAAC,KAAI,CACHC,MAAI,EACJC,GAAI,GACJQ,MAAO,CACLiB,QAAS,OACTG,eAAgB,WAChBqD,WAAY,IACZ,WAEF,SAAC,KAAM,CACLjE,GAAI,qBACJiB,KAAK,SACLE,QAAQ,UACR+C,SAAU7B,EACV8B,QAAS,WACPxC,EAAS,eAAD,OACSO,EAAS,oBAAYL,EAAM,YAE9C,EACArD,MAAO,YAET,SAAC,KAAM,CACLwB,GAAI,mBACJiB,KAAK,SACLE,QAAQ,aACR+C,SAAU7B,IAAegB,EACzB7D,MAAO,CAAEuB,WAAY,GACrBvC,MAAO,mBAQvB,G","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Tenants/TenantDetails/TenantYAML.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport { CopyIcon } from \"../../../../../icons\";\nimport { Button } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n \n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../common/api\";\nimport {\n fieldBasic,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { getTenantAsync } from \"../thunks/tenantDetailsAsync\";\nimport SectionTitle from \"../../Common/SectionTitle\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorState: {\n color: \"#b53b4b\",\n fontSize: 14,\n fontWeight: \"bold\",\n },\n codeMirrorContainer: {\n marginBottom: 20,\n paddingLeft: 15,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...modalStyleUtils,\n ...fieldBasic,\n });\n\ninterface ITenantYAML {\n yaml: string;\n}\n\ninterface ITenantYAMLProps {\n classes: any;\n}\n\nconst TenantYAML = ({ classes }: ITenantYAMLProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const tenant = useSelector((state: AppState) => state.tenants.currentTenant);\n const namespace = useSelector(\n (state: AppState) => state.tenants.currentNamespace\n );\n\n const [addLoading, setAddLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [tenantYaml, setTenantYaml] = useState(\"\");\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const updateTenant = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n setErrorMessage(\"\");\n api\n .invoke(\"PUT\", `/api/v1/namespaces/${namespace}/tenants/${tenant}/yaml`, {\n yaml: tenantYaml,\n })\n .then((res) => {\n setAddLoading(false);\n dispatch(getTenantAsync());\n setErrorMessage(\"\");\n navigate(`/namespaces/${namespace}/tenants/${tenant}/summary`);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setErrorMessage(err.errorMessage);\n });\n };\n\n useEffect(() => {\n api\n .invoke(\"GET\", `/api/v1/namespaces/${namespace}/tenants/${tenant}/yaml`)\n .then((res: ITenantYAML) => {\n setLoading(false);\n setTenantYaml(res.yaml);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [tenant, namespace, dispatch]);\n\n useEffect(() => {}, []);\n\n const validSave = tenantYaml.trim() !== \"\";\n\n return (\n \n {addLoading ||\n (loading && (\n \n \n \n ))}\n {errorMessage !== \"\" && (\n {errorMessage}
\n )}\n\n {!loading && (\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(TenantYAML);\n"],"names":["withStyles","theme","createStyles","fieldBasic","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","item","xs","sx","marginBottom","className","inputLabel","tooltipContainer","title","placement","style","maxHeight","overflow","border","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","text","type","icon","variant","errorState","fontWeight","codeMirrorContainer","paddingLeft","modalStyleUtils","dispatch","useAppDispatch","navigate","useNavigate","tenant","useSelector","state","tenants","currentTenant","namespace","currentNamespace","useState","addLoading","setAddLoading","loading","setLoading","tenantYaml","setTenantYaml","errorMessage","setErrorMessage","useEffect","api","then","res","yaml","catch","err","setModalErrorSnackMessage","validSave","trim","Fragment","noValidate","autoComplete","onSubmit","e","preventDefault","getTenantAsync","container","editor","data","paddingTop","disabled","onClick"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.16dc83a0.chunk.js b/portal-ui/build/static/js/1581.16dc83a0.chunk.js
new file mode 100644
index 000000000..39b0640a1
--- /dev/null
+++ b/portal-ui/build/static/js/1581.16dc83a0.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581],{1581:function(e,t,a){a.r(t);var n=a(29439),s=a(1413),i=a(72791),l=a(40986),o=a(75952),c=a(11135),r=a(25787),u=a(61889),d=a(45248),f=a(23814),m=a(37516),x=a(21435),Z=a(56028),h=a(81207),p=a(56578),j=a(87995),v=a(25469),b=a(80184);t.default=(0,r.Z)((function(e){return(0,c.Z)((0,s.Z)((0,s.Z)({},f.DF),f.ID))}))((function(e){var t=e.classes,a=e.open,s=e.enabled,c=e.cfg,r=e.selectedBucket,f=e.closeModalAndRefresh,g=(0,v.TL)(),k=(0,i.useState)(!1),C=(0,n.Z)(k,2),S=C[0],N=C[1],P=(0,i.useState)(!1),q=(0,n.Z)(P,2),B=q[0],w=q[1],y=(0,i.useState)("1"),z=(0,n.Z)(y,2),E=z[0],_=z[1],M=(0,i.useState)("Ti"),D=(0,n.Z)(M,2),T=D[0],F=D[1],I=(0,i.useState)(!1),L=(0,n.Z)(I,2),Q=L[0],R=L[1];(0,i.useEffect)((function(){if(s&&(w(!0),c)){var e=(0,d.Am)(c.quota,!0,!1,!0);_(e.total.toString()),F(e.unit),R(!0)}}),[s,c]),(0,i.useEffect)((function(){R(!B||/^\d*(?:\.\d{1,2})?$/.test(E))}),[B,E]);return(0,b.jsx)(Z.Z,{modalOpen:a,onClose:function(){f()},title:"Enable Bucket Quota",titleIcon:(0,b.jsx)(o.Wqw,{}),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(){if(!S&&Q){var e={enabled:B,amount:parseInt((0,d.Pw)(E,T,!0)),quota_type:"hard"};h.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/quota"),e).then((function(){N(!1),f()})).catch((function(e){N(!1),g((0,j.zb)(e))}))}}()},children:(0,b.jsxs)(u.ZP,{container:!0,children:[(0,b.jsxs)(u.ZP,{item:!0,xs:12,className:t.formScrollable,children:[(0,b.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(m.Z,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:B,onChange:function(e){w(e.target.checked)},label:"Enabled"})}),B&&(0,b.jsx)(i.Fragment,{children:(0,b.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(u.ZP,{container:!0,children:(0,b.jsx)(u.ZP,{item:!0,xs:12,children:(0,b.jsx)(x.Z,{id:"quota_size",name:"quota_size",onChange:function(e){_(e.target.value),e.target.validity.valid?R(!0):R(!1)},label:"Quota",value:E,required:!0,min:"1",overlayObject:(0,b.jsx)(p.Z,{id:"quota_unit",onUnitChange:function(e){F(e)},unitSelected:T,unitsList:(0,d.zQ)(["Ki"]),disabled:!1}),error:Q?"":"Please enter a valid quota"})})})})})]}),(0,b.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,b.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:S,onClick:function(){f()},label:"Cancel"}),(0,b.jsx)(o.zxk,{id:"save",type:"submit",variant:"callAction",disabled:S||!Q,label:"Save"})]}),S&&(0,b.jsx)(u.ZP,{item:!0,xs:12,children:(0,b.jsx)(l.Z,{})})]})})})}))},56028:function(e,t,a){var n=a(29439),s=a(1413),i=a(72791),l=a(78687),o=a(13400),c=a(55646),r=a(5574),u=a(65661),d=a(39157),f=a(11135),m=a(25787),x=a(23814),Z=a(25469),h=a(29823),p=a(28057),j=a(87995),v=a(80184);t.Z=(0,m.Z)((function(e){return(0,f.Z)((0,s.Z)((0,s.Z)({},x.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))((function(e){var t=e.onClose,a=e.modalOpen,f=e.title,m=e.children,x=e.classes,b=e.wideLimit,g=void 0===b||b,k=e.noContentPadding,C=e.titleIcon,S=void 0===C?null:C,N=(0,Z.TL)(),P=(0,i.useState)(!1),q=(0,n.Z)(P,2),B=q[0],w=q[1],y=(0,l.v9)((function(e){return e.system.modalSnackBar}));(0,i.useEffect)((function(){N((0,j.MK)(""))}),[N]),(0,i.useEffect)((function(){if(y){if(""===y.message)return void w(!1);"error"!==y.type&&w(!0)}}),[y]);var z=g?{classes:{paper:x.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return y&&(E=y.detailedErrorMsg,(""===y.detailedErrorMsg||y.detailedErrorMsg.length<5)&&(E=y.message)),(0,v.jsxs)(r.Z,(0,s.Z)((0,s.Z)({open:a,classes:x},z),{},{scroll:"paper",onClose:function(e,a){"backdropClick"!==a&&t()},className:x.root,children:[(0,v.jsxs)(u.Z,{className:x.title,children:[(0,v.jsxs)("div",{className:x.titleText,children:[S," ",f]}),(0,v.jsx)("div",{className:x.closeContainer,children:(0,v.jsx)(o.Z,{"aria-label":"close",id:"close",className:x.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,v.jsx)(h.Z,{})})})]}),(0,v.jsx)(p.Z,{isModal:!0}),(0,v.jsx)(c.Z,{open:B,className:x.snackBarModal,onClose:function(){w(!1),N((0,j.MK)(""))},message:E,ContentProps:{className:"".concat(x.snackBar," ").concat(y&&"error"===y.type?x.errorSnackBar:"")},autoHideDuration:y&&"error"===y.type?1e4:5e3}),(0,v.jsx)(d.Z,{className:k?"":x.content,children:m})]}))}))}}]);
+//# sourceMappingURL=1581.16dc83a0.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.16dc83a0.chunk.js.map b/portal-ui/build/static/js/1581.16dc83a0.chunk.js.map
new file mode 100644
index 000000000..05b4e3480
--- /dev/null
+++ b/portal-ui/build/static/js/1581.16dc83a0.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1581.16dc83a0.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { 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\";\nimport { BucketQuota } from \"../types\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"mds\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\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, 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 let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\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 .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","setModalErrorSnackMessage","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","event","target","label","validity","valid","required","min","overlayObject","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","error","modalButtonBar","type","variant","onClick","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","scroll","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.6892440d.chunk.js b/portal-ui/build/static/js/1581.6892440d.chunk.js
deleted file mode 100644
index e03aa5100..000000000
--- a/portal-ui/build/static/js/1581.6892440d.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581],{1581:function(e,t,a){a.r(t);var n=a(29439),s=a(1413),i=a(72791),l=a(40986),o=a(75952),c=a(11135),r=a(25787),u=a(61889),d=a(45248),f=a(23814),m=a(37516),x=a(21435),Z=a(56028),h=a(81207),p=a(56096),j=a(56578),v=a(87995),b=a(25469),g=a(80184);t.default=(0,r.Z)((function(e){return(0,c.Z)((0,s.Z)((0,s.Z)({},f.DF),f.ID))}))((function(e){var t=e.classes,a=e.open,s=e.enabled,c=e.cfg,r=e.selectedBucket,f=e.closeModalAndRefresh,k=(0,b.TL)(),C=(0,i.useState)(!1),S=(0,n.Z)(C,2),N=S[0],P=S[1],q=(0,i.useState)(!1),B=(0,n.Z)(q,2),w=B[0],y=B[1],z=(0,i.useState)("1"),E=(0,n.Z)(z,2),_=E[0],M=E[1],D=(0,i.useState)("Ti"),T=(0,n.Z)(D,2),F=T[0],I=T[1],L=(0,i.useState)(!1),Q=(0,n.Z)(L,2),R=Q[0],W=Q[1];(0,i.useEffect)((function(){if(s&&(y(!0),c)){var e=(0,d.Am)(c.quota,!0,!1,!0);M(e.total.toString()),I(e.unit),W(!0)}}),[s,c]),(0,i.useEffect)((function(){W(!w||/^\d*(?:\.\d{1,2})?$/.test(_))}),[w,_]);return(0,g.jsx)(Z.Z,{modalOpen:a,onClose:function(){f()},title:"Enable Bucket Quota",titleIcon:(0,g.jsx)(p.Wqw,{}),children:(0,g.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(){if(!N&&R){var e={enabled:w,amount:parseInt((0,d.Pw)(_,F,!0)),quota_type:"hard"};h.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/quota"),e).then((function(){P(!1),f()})).catch((function(e){P(!1),k((0,v.zb)(e))}))}}()},children:(0,g.jsxs)(u.ZP,{container:!0,children:[(0,g.jsxs)(u.ZP,{item:!0,xs:12,className:t.formScrollable,children:[(0,g.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,g.jsx)(m.Z,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:w,onChange:function(e){y(e.target.checked)},label:"Enabled"})}),w&&(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,g.jsx)(u.ZP,{container:!0,children:(0,g.jsx)(u.ZP,{item:!0,xs:12,children:(0,g.jsx)(x.Z,{id:"quota_size",name:"quota_size",onChange:function(e){M(e.target.value),e.target.validity.valid?W(!0):W(!1)},label:"Quota",value:_,required:!0,min:"1",overlayObject:(0,g.jsx)(j.Z,{id:"quota_unit",onUnitChange:function(e){I(e)},unitSelected:F,unitsList:(0,d.zQ)(["Ki"]),disabled:!1}),error:R?"":"Please enter a valid quota"})})})})})]}),(0,g.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,g.jsx)(o.zx,{id:"cancel",type:"button",variant:"regular",disabled:N,onClick:function(){f()},label:"Cancel"}),(0,g.jsx)(o.zx,{id:"save",type:"submit",variant:"callAction",disabled:N||!R,label:"Save"})]}),N&&(0,g.jsx)(u.ZP,{item:!0,xs:12,children:(0,g.jsx)(l.Z,{})})]})})})}))},56028:function(e,t,a){var n=a(29439),s=a(1413),i=a(72791),l=a(78687),o=a(13400),c=a(55646),r=a(5574),u=a(65661),d=a(39157),f=a(11135),m=a(25787),x=a(23814),Z=a(25469),h=a(29823),p=a(28057),j=a(87995),v=a(80184);t.Z=(0,m.Z)((function(e){return(0,f.Z)((0,s.Z)((0,s.Z)({},x.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))((function(e){var t=e.onClose,a=e.modalOpen,f=e.title,m=e.children,x=e.classes,b=e.wideLimit,g=void 0===b||b,k=e.noContentPadding,C=e.titleIcon,S=void 0===C?null:C,N=(0,Z.TL)(),P=(0,i.useState)(!1),q=(0,n.Z)(P,2),B=q[0],w=q[1],y=(0,l.v9)((function(e){return e.system.modalSnackBar}));(0,i.useEffect)((function(){N((0,j.MK)(""))}),[N]),(0,i.useEffect)((function(){if(y){if(""===y.message)return void w(!1);"error"!==y.type&&w(!0)}}),[y]);var z=g?{classes:{paper:x.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return y&&(E=y.detailedErrorMsg,(""===y.detailedErrorMsg||y.detailedErrorMsg.length<5)&&(E=y.message)),(0,v.jsxs)(r.Z,(0,s.Z)((0,s.Z)({open:a,classes:x},z),{},{scroll:"paper",onClose:function(e,a){"backdropClick"!==a&&t()},className:x.root,children:[(0,v.jsxs)(u.Z,{className:x.title,children:[(0,v.jsxs)("div",{className:x.titleText,children:[S," ",f]}),(0,v.jsx)("div",{className:x.closeContainer,children:(0,v.jsx)(o.Z,{"aria-label":"close",id:"close",className:x.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,v.jsx)(h.Z,{})})})]}),(0,v.jsx)(p.Z,{isModal:!0}),(0,v.jsx)(c.Z,{open:B,className:x.snackBarModal,onClose:function(){w(!1),N((0,j.MK)(""))},message:E,ContentProps:{className:"".concat(x.snackBar," ").concat(y&&"error"===y.type?x.errorSnackBar:"")},autoHideDuration:y&&"error"===y.type?1e4:5e3}),(0,v.jsx)(d.Z,{className:k?"":x.content,children:m})]}))}))}}]);
-//# sourceMappingURL=1581.6892440d.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1581.6892440d.chunk.js.map b/portal-ui/build/static/js/1581.6892440d.chunk.js.map
deleted file mode 100644
index 97154c645..000000000
--- a/portal-ui/build/static/js/1581.6892440d.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1581.6892440d.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport { 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\";\nimport { BucketQuota } from \"../types\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\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, 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 let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\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 .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","setModalErrorSnackMessage","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","event","target","label","validity","valid","required","min","overlayObject","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","error","modalButtonBar","type","variant","onClick","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","scroll","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.6758414b.chunk.js b/portal-ui/build/static/js/1604.6758414b.chunk.js
new file mode 100644
index 000000000..0b047541c
--- /dev/null
+++ b/portal-ui/build/static/js/1604.6758414b.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(1413),o=n(72791),s=n(75952),l=n(40986),c=n(11135),r=n(25787),u=n(61889),d=n(23814),m=n(81207),f=n(56028),Z=n(83679),p=n(21435),x=n(87995),h=n(25469),v=n(80184);t.default=(0,r.Z)((function(e){return(0,c.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},d.bK),d.QV),d.DF),d.ID))}))((function(e){var t=e.classes,n=e.open,i=e.bucketName,c=e.closeModalAndRefresh,r=(0,h.TL)(),d=(0,o.useState)(!1),b=(0,a.Z)(d,2),j=b[0],g=b[1],N=(0,o.useState)(!0),k=(0,a.Z)(N,2),C=k[0],y=k[1],S=(0,o.useState)("compliance"),w=(0,a.Z)(S,2),P=w[0],M=w[1],R=(0,o.useState)("days"),B=(0,a.Z)(R,2),E=B[0],_=B[1],D=(0,o.useState)(1),z=(0,a.Z)(D,2),F=z[0],T=z[1],O=(0,o.useState)(!1),A=(0,a.Z)(O,2),K=A[0],L=A[1];return(0,o.useEffect)((function(){Number.isNaN(F)||F<1?L(!1):L(!0)}),[F]),(0,o.useEffect)((function(){C&&m.Z.invoke("GET","/api/v1/buckets/".concat(i,"/retention")).then((function(e){y(!1),M(e.mode),T(e.validity),_(e.unit)})).catch((function(e){y(!1)}))}),[C,i]),(0,v.jsx)(f.Z,{title:"Set Retention Configuration",modalOpen:n,onClose:function(){c()},children:C?(0,v.jsx)(s.aNw,{style:{width:16,height:16}}):(0,v.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),j||(g(!0),m.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/retention"),{mode:P,unit:E,validity:F}).then((function(){g(!1),c()})).catch((function(e){g(!1),r((0,x.zb)(e))})))},children:(0,v.jsxs)(u.ZP,{container:!0,children:[(0,v.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalFormScrollable,children:[(0,v.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,v.jsx)(Z.Z,{currentSelection:P,id:"retention_mode",name:"retention_mode",label:"Retention Mode",onChange:function(e){M(e.target.value)},selectorOptions:[{value:"compliance",label:"Compliance"},{value:"governance",label:"Governance"}]})}),(0,v.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,v.jsx)(Z.Z,{currentSelection:E,id:"retention_unit",name:"retention_unit",label:"Retention Unit",onChange:function(e){_(e.target.value)},selectorOptions:[{value:"days",label:"Days"},{value:"years",label:"Years"}]})}),(0,v.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,v.jsx)(p.Z,{type:"number",id:"retention_validity",name:"retention_validity",onChange:function(e){T(e.target.valueAsNumber)},label:"Retention Validity",value:String(F),required:!0,min:"1"})})]}),(0,v.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,v.jsx)(s.zxk,{id:"cancel",type:"button",variant:"regular",disabled:j,onClick:function(){c()},label:"Cancel"}),(0,v.jsx)(s.zxk,{id:"set",type:"submit",variant:"callAction",color:"primary",disabled:j||!K,label:"Set"})]}),j&&(0,v.jsx)(u.ZP,{item:!0,xs:12,children:(0,v.jsx)(l.Z,{})})]})})})}))},56028:function(e,t,n){var a=n(29439),i=n(1413),o=n(72791),s=n(78687),l=n(13400),c=n(55646),r=n(5574),u=n(65661),d=n(39157),m=n(11135),f=n(25787),Z=n(23814),p=n(25469),x=n(29823),h=n(28057),v=n(87995),b=n(80184);t.Z=(0,f.Z)((function(e){return(0,m.Z)((0,i.Z)((0,i.Z)({},Z.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},Z.sN))}))((function(e){var t=e.onClose,n=e.modalOpen,m=e.title,f=e.children,Z=e.classes,j=e.wideLimit,g=void 0===j||j,N=e.noContentPadding,k=e.titleIcon,C=void 0===k?null:k,y=(0,p.TL)(),S=(0,o.useState)(!1),w=(0,a.Z)(S,2),P=w[0],M=w[1],R=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,o.useEffect)((function(){y((0,v.MK)(""))}),[y]),(0,o.useEffect)((function(){if(R){if(""===R.message)return void M(!1);"error"!==R.type&&M(!0)}}),[R]);var B=g?{classes:{paper:Z.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return R&&(E=R.detailedErrorMsg,(""===R.detailedErrorMsg||R.detailedErrorMsg.length<5)&&(E=R.message)),(0,b.jsxs)(r.Z,(0,i.Z)((0,i.Z)({open:n,classes:Z},B),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&t()},className:Z.root,children:[(0,b.jsxs)(u.Z,{className:Z.title,children:[(0,b.jsxs)("div",{className:Z.titleText,children:[C," ",m]}),(0,b.jsx)("div",{className:Z.closeContainer,children:(0,b.jsx)(l.Z,{"aria-label":"close",id:"close",className:Z.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,b.jsx)(x.Z,{})})})]}),(0,b.jsx)(h.Z,{isModal:!0}),(0,b.jsx)(c.Z,{open:P,className:Z.snackBarModal,onClose:function(){M(!1),y((0,v.MK)(""))},message:E,ContentProps:{className:"".concat(Z.snackBar," ").concat(R&&"error"===R.type?Z.errorSnackBar:"")},autoHideDuration:R&&"error"===R.type?1e4:5e3}),(0,b.jsx)(d.Z,{className:N?"":Z.content,children:f})]}))}))}}]);
+//# sourceMappingURL=1604.6758414b.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.6758414b.chunk.js.map b/portal-ui/build/static/js/1604.6758414b.chunk.js.map
new file mode 100644
index 000000000..59ed6aa9a
--- /dev/null
+++ b/portal-ui/build/static/js/1604.6758414b.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1604.6758414b.chunk.js","mappings":"sSAuNA,WAAeA,EAAAA,EAAAA,IA9KA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,kCACRC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACF,GAwKL,EA/J2B,SAAH,GAKS,IAJ/BC,EAAO,EAAPA,QACAC,EAAI,EAAJA,KACAC,EAAU,EAAVA,WACAC,EAAoB,EAApBA,qBAEMC,GAAWC,EAAAA,EAAAA,MACjB,GAAoCC,EAAAA,EAAAA,WAAkB,GAAM,eAArDC,EAAU,KAAEC,EAAa,KAChC,GAAsCF,EAAAA,EAAAA,WAAkB,GAAK,eAAtDG,EAAW,KAAEC,EAAc,KAClC,GAA0CJ,EAAAA,EAAAA,UAAiB,cAAa,eAAjEK,EAAa,KAAEC,EAAgB,KACtC,GAA0CN,EAAAA,EAAAA,UAAiB,QAAO,eAA3DO,EAAa,KAAEC,EAAgB,KACtC,GAAkDR,EAAAA,EAAAA,UAAiB,GAAE,eAA9DS,EAAiB,KAAEC,EAAoB,KAC9C,GAA0BV,EAAAA,EAAAA,WAAkB,GAAM,eAA3CW,EAAK,KAAEC,EAAQ,KAkDtB,OA1BAC,EAAAA,EAAAA,YAAU,WACJC,OAAOC,MAAMN,IAAsBA,EAAoB,EACzDG,GAAS,GAGXA,GAAS,EACX,GAAG,CAACH,KAEJI,EAAAA,EAAAA,YAAU,WACJV,GACFa,EAAAA,EAAAA,OACU,MAAM,mBAAD,OAAqBpB,EAAU,eAC3CqB,MAAK,SAACC,GACLd,GAAe,GAGfE,EAAiBY,EAAIC,MACrBT,EAAqBQ,EAAIE,UACzBZ,EAAiBU,EAAIG,KACvB,IACCC,OAAM,SAACC,GACNnB,GAAe,EACjB,GAEN,GAAG,CAACD,EAAaP,KAGf,SAAC,IAAY,CACX4B,MAAM,8BACNC,UAAW9B,EACX+B,QAAS,WACP7B,GACF,EAAE,SAEDM,GACC,SAAC,MAAM,CAACwB,MAAO,CAAEC,MAAO,GAAIC,OAAQ,OAEpC,iBACEC,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,GACIA,EA9DfC,iBACFjC,IAGJC,GAAc,GACdc,EAAAA,EAAAA,OACU,MAAM,mBAAD,OAAqBpB,EAAU,cAAc,CACxDuB,KAAMd,EACNgB,KAAMd,EACNa,SAAUX,IAEXQ,MAAK,WACJf,GAAc,GACdL,GACF,IACCyB,OAAM,SAACC,GACNrB,GAAc,GACdJ,GAASqC,EAAAA,EAAAA,IAA0BZ,GACrC,IA6CI,EAAE,UAEF,UAAC,KAAI,CAACa,WAAS,aACb,UAAC,KAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,UAAW7C,EAAQ8C,oBAAoB,WACxD,SAAC,KAAI,CAACH,MAAI,EAACC,GAAI,GAAIC,UAAW7C,EAAQ+C,aAAa,UACjD,SAAC,IAAkB,CACjBC,iBAAkBrC,EAClBsC,GAAG,iBACHC,KAAK,iBACLC,MAAM,iBACNC,SAAU,SAACb,GACT3B,EAAiB2B,EAAEc,OAAOC,MAC5B,EACAC,gBAAiB,CACf,CAAED,MAAO,aAAcH,MAAO,cAC9B,CAAEG,MAAO,aAAcH,MAAO,oBAIpC,SAAC,KAAI,CAACR,MAAI,EAACC,GAAI,GAAIC,UAAW7C,EAAQ+C,aAAa,UACjD,SAAC,IAAkB,CACjBC,iBAAkBnC,EAClBoC,GAAG,iBACHC,KAAK,iBACLC,MAAM,iBACNC,SAAU,SAACb,GACTzB,EAAiByB,EAAEc,OAAOC,MAC5B,EACAC,gBAAiB,CACf,CAAED,MAAO,OAAQH,MAAO,QACxB,CAAEG,MAAO,QAASH,MAAO,eAI/B,SAAC,KAAI,CAACR,MAAI,EAACC,GAAI,GAAIC,UAAW7C,EAAQ+C,aAAa,UACjD,SAAC,IAAe,CACdS,KAAK,SACLP,GAAG,qBACHC,KAAK,qBACLE,SAAU,SAACb,GACTvB,EAAqBuB,EAAEc,OAAOI,cAChC,EACAN,MAAM,qBACNG,MAAOI,OAAO3C,GACd4C,UAAQ,EACRC,IAAI,YAIV,UAAC,KAAI,CAACjB,MAAI,EAACC,GAAI,GAAIC,UAAW7C,EAAQ6D,eAAe,WACnD,SAAC,MAAM,CACLZ,GAAI,SACJO,KAAK,SACLM,QAAQ,UACRC,SAAUxD,EACVyD,QAAS,WACP7D,GACF,EACAgD,MAAO,YAET,SAAC,MAAM,CACLF,GAAI,MACJO,KAAK,SACLM,QAAQ,aACRG,MAAM,UACNF,SAAUxD,IAAeU,EACzBkC,MAAO,WAGV5C,IACC,SAAC,KAAI,CAACoC,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAc,YAQ/B,G,qNCxCA,KAAenD,EAAAA,EAAAA,IAlIA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,kBACRuE,EAAAA,IAAkB,IACrBC,QAAS,CACPC,QAAS,GACTC,cAAe,GAEjBC,iBAAkB,CAChBpC,MAAO,OACPqC,SAAU,MAETC,EAAAA,IACF,GAsHL,EApHqB,SAAH,GASE,IARlBxC,EAAO,EAAPA,QACAD,EAAS,EAATA,UACAD,EAAK,EAALA,MACA2C,EAAQ,EAARA,SACAzE,EAAO,EAAPA,QAAQ,EAAD,EACP0E,UAAAA,OAAS,OAAO,EAChBC,EAAgB,EAAhBA,iBAAiB,EAAD,EAChBC,UAAAA,OAAS,MAAG,KAAI,EAEVxE,GAAWC,EAAAA,EAAAA,MACjB,GAAwCC,EAAAA,EAAAA,WAAkB,GAAM,eAAzDuE,EAAY,KAAEC,EAAe,KAE9BC,GAAoBC,EAAAA,EAAAA,KACxB,SAACC,GAAe,OAAKA,EAAMC,OAAOC,aAAa,KAGjDhE,EAAAA,EAAAA,YAAU,WACRf,GAASgF,EAAAA,EAAAA,IAAqB,IAChC,GAAG,CAAChF,KAEJe,EAAAA,EAAAA,YAAU,WACR,GAAI4D,EAAmB,CACrB,GAAkC,KAA9BA,EAAkBM,QAEpB,YADAP,GAAgB,GAIa,UAA3BC,EAAkBvB,MACpBsB,GAAgB,EAEpB,CACF,GAAG,CAACC,IAEJ,IAKMO,EAAaZ,EACf,CACE1E,QAAS,CACPuF,MAAOvF,EAAQsE,mBAGnB,CAAEC,SAAU,KAAeiB,WAAW,GAEtCH,EAAU,GAYd,OAVIN,IACFM,EAAUN,EAAkBU,kBAEa,KAAvCV,EAAkBU,kBAClBV,EAAkBU,iBAAiBC,OAAS,KAE5CL,EAAUN,EAAkBM,WAK9B,UAAC,KAAM,gBACLpF,KAAM8B,EACN/B,QAASA,GACLsF,GAAU,IACdK,OAAQ,QACR3D,QAAS,SAAC4D,EAAOC,GACA,kBAAXA,GACF7D,GAEJ,EACAa,UAAW7C,EAAQ8F,KAAK,WAExB,UAAC,IAAW,CAACjD,UAAW7C,EAAQ8B,MAAM,WACpC,iBAAKe,UAAW7C,EAAQ+F,UAAU,UAC/BnB,EAAU,IAAE9C,MAEf,gBAAKe,UAAW7C,EAAQgG,eAAe,UACrC,SAAC,IAAU,CACT,aAAW,QACX/C,GAAI,QACJJ,UAAW7C,EAAQiG,YACnBjC,QAAShC,EACTkE,eAAa,EACbC,KAAK,QAAO,UAEZ,SAAC,IAAS,YAKhB,SAAC,IAAS,CAACC,SAAS,KACpB,SAAC,IAAQ,CACPnG,KAAM4E,EACNhC,UAAW7C,EAAQqG,cACnBrE,QAAS,WA3Db8C,GAAgB,GAChB1E,GAASgF,EAAAA,EAAAA,IAAqB,IA4D1B,EACAC,QAASA,EACTiB,aAAc,CACZzD,UAAU,GAAD,OAAK7C,EAAQuG,SAAQ,YAC5BxB,GAAgD,UAA3BA,EAAkBvB,KACnCxD,EAAQwG,cACR,KAGRC,iBACE1B,GAAgD,UAA3BA,EAAkBvB,KAAmB,IAAQ,OAGtE,SAAC,IAAa,CAACX,UAAW8B,EAAmB,GAAK3E,EAAQmE,QAAQ,SAC/DM,OAIT,G","sources":["screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Loader } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface ISetRetentionConfigProps {\n classes: any;\n open: boolean;\n bucketName: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetRetentionConfig = ({\n classes,\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(\"compliance\");\n const [retentionUnit, setRetentionUnit] = useState(\"days\");\n const [retentionValidity, setRetentionValidity] = useState(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\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/retention`, {\n mode: retentionMode,\n unit: retentionUnit,\n validity: retentionValidity,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n if (Number.isNaN(retentionValidity) || retentionValidity < 1) {\n setValid(false);\n return;\n }\n setValid(true);\n }, [retentionValidity]);\n\n useEffect(() => {\n if (loadingForm) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/retention`)\n .then((res: IRetentionConfig) => {\n setLoadingForm(false);\n\n // We set default values\n setRetentionMode(res.mode);\n setRetentionValidity(res.validity);\n setRetentionUnit(res.unit);\n })\n .catch((err: ErrorResponseHandler) => {\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 withStyles(styles)(SetRetentionConfig);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","spacingUtils","createTenantCommon","formFieldStyles","modalStyleUtils","classes","open","bucketName","closeModalAndRefresh","dispatch","useAppDispatch","useState","addLoading","setAddLoading","loadingForm","setLoadingForm","retentionMode","setRetentionMode","retentionUnit","setRetentionUnit","retentionValidity","setRetentionValidity","valid","setValid","useEffect","Number","isNaN","api","then","res","mode","validity","unit","catch","err","title","modalOpen","onClose","style","width","height","noValidate","autoComplete","onSubmit","e","preventDefault","setModalErrorSnackMessage","container","item","xs","className","modalFormScrollable","formFieldRow","currentSelection","id","name","label","onChange","target","value","selectorOptions","type","valueAsNumber","String","required","min","modalButtonBar","variant","disabled","onClick","color","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","scroll","event","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.816d8ab5.chunk.js b/portal-ui/build/static/js/1604.816d8ab5.chunk.js
deleted file mode 100644
index e34f77991..000000000
--- a/portal-ui/build/static/js/1604.816d8ab5.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1604],{1604:function(e,t,n){n.r(t);var a=n(29439),i=n(1413),o=n(72791),s=n(75952),l=n(40986),c=n(11135),r=n(25787),u=n(61889),d=n(23814),m=n(81207),f=n(56028),Z=n(83679),p=n(21435),x=n(72401),h=n(87995),v=n(25469),b=n(80184);t.default=(0,r.Z)((function(e){return(0,c.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},d.bK),d.QV),d.DF),d.ID))}))((function(e){var t=e.classes,n=e.open,i=e.bucketName,c=e.closeModalAndRefresh,r=(0,v.TL)(),d=(0,o.useState)(!1),j=(0,a.Z)(d,2),g=j[0],C=j[1],N=(0,o.useState)(!0),y=(0,a.Z)(N,2),S=y[0],k=y[1],P=(0,o.useState)("compliance"),w=(0,a.Z)(P,2),M=w[0],R=w[1],B=(0,o.useState)("days"),E=(0,a.Z)(B,2),_=E[0],D=E[1],z=(0,o.useState)(1),F=(0,a.Z)(z,2),T=F[0],O=F[1],A=(0,o.useState)(!1),K=(0,a.Z)(A,2),L=K[0],V=K[1];return(0,o.useEffect)((function(){Number.isNaN(T)||T<1?V(!1):V(!0)}),[T]),(0,o.useEffect)((function(){S&&m.Z.invoke("GET","/api/v1/buckets/".concat(i,"/retention")).then((function(e){k(!1),R(e.mode),O(e.validity),D(e.unit)})).catch((function(e){k(!1)}))}),[S,i]),(0,b.jsx)(f.Z,{title:"Set Retention Configuration",modalOpen:n,onClose:function(){c()},children:S?(0,b.jsx)(x.Z,{style:{width:16,height:16}}):(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),g||(C(!0),m.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/retention"),{mode:M,unit:_,validity:T}).then((function(){C(!1),c()})).catch((function(e){C(!1),r((0,h.zb)(e))})))},children:(0,b.jsxs)(u.ZP,{container:!0,children:[(0,b.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalFormScrollable,children:[(0,b.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(Z.Z,{currentSelection:M,id:"retention_mode",name:"retention_mode",label:"Retention Mode",onChange:function(e){R(e.target.value)},selectorOptions:[{value:"compliance",label:"Compliance"},{value:"governance",label:"Governance"}]})}),(0,b.jsx)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(Z.Z,{currentSelection:_,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)(u.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,b.jsx)(p.Z,{type:"number",id:"retention_validity",name:"retention_validity",onChange:function(e){O(e.target.valueAsNumber)},label:"Retention Validity",value:String(T),required:!0,min:"1"})})]}),(0,b.jsxs)(u.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,b.jsx)(s.zx,{id:"cancel",type:"button",variant:"regular",disabled:g,onClick:function(){c()},label:"Cancel"}),(0,b.jsx)(s.zx,{id:"set",type:"submit",variant:"callAction",color:"primary",disabled:g||!L,label:"Set"})]}),g&&(0,b.jsx)(u.ZP,{item:!0,xs:12,children:(0,b.jsx)(l.Z,{})})]})})})}))},56028:function(e,t,n){var a=n(29439),i=n(1413),o=n(72791),s=n(78687),l=n(13400),c=n(55646),r=n(5574),u=n(65661),d=n(39157),m=n(11135),f=n(25787),Z=n(23814),p=n(25469),x=n(29823),h=n(28057),v=n(87995),b=n(80184);t.Z=(0,f.Z)((function(e){return(0,m.Z)((0,i.Z)((0,i.Z)({},Z.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},Z.sN))}))((function(e){var t=e.onClose,n=e.modalOpen,m=e.title,f=e.children,Z=e.classes,j=e.wideLimit,g=void 0===j||j,C=e.noContentPadding,N=e.titleIcon,y=void 0===N?null:N,S=(0,p.TL)(),k=(0,o.useState)(!1),P=(0,a.Z)(k,2),w=P[0],M=P[1],R=(0,s.v9)((function(e){return e.system.modalSnackBar}));(0,o.useEffect)((function(){S((0,v.MK)(""))}),[S]),(0,o.useEffect)((function(){if(R){if(""===R.message)return void M(!1);"error"!==R.type&&M(!0)}}),[R]);var B=g?{classes:{paper:Z.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return R&&(E=R.detailedErrorMsg,(""===R.detailedErrorMsg||R.detailedErrorMsg.length<5)&&(E=R.message)),(0,b.jsxs)(r.Z,(0,i.Z)((0,i.Z)({open:n,classes:Z},B),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&t()},className:Z.root,children:[(0,b.jsxs)(u.Z,{className:Z.title,children:[(0,b.jsxs)("div",{className:Z.titleText,children:[y," ",m]}),(0,b.jsx)("div",{className:Z.closeContainer,children:(0,b.jsx)(l.Z,{"aria-label":"close",id:"close",className:Z.closeButton,onClick:t,disableRipple:!0,size:"small",children:(0,b.jsx)(x.Z,{})})})]}),(0,b.jsx)(h.Z,{isModal:!0}),(0,b.jsx)(c.Z,{open:w,className:Z.snackBarModal,onClose:function(){M(!1),S((0,v.MK)(""))},message:E,ContentProps:{className:"".concat(Z.snackBar," ").concat(R&&"error"===R.type?Z.errorSnackBar:"")},autoHideDuration:R&&"error"===R.type?1e4:5e3}),(0,b.jsx)(d.Z,{className:C?"":Z.content,children:f})]}))}))}}]);
-//# sourceMappingURL=1604.816d8ab5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1604.816d8ab5.chunk.js.map b/portal-ui/build/static/js/1604.816d8ab5.chunk.js.map
deleted file mode 100644
index 05713b368..000000000
--- a/portal-ui/build/static/js/1604.816d8ab5.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1604.816d8ab5.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Button } from \"mds\";\nimport { LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Loader from \"../../Common/Loader/Loader\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface ISetRetentionConfigProps {\n classes: any;\n open: boolean;\n bucketName: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetRetentionConfig = ({\n classes,\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(\"compliance\");\n const [retentionUnit, setRetentionUnit] = useState(\"days\");\n const [retentionValidity, setRetentionValidity] = useState(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\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/retention`, {\n mode: retentionMode,\n unit: retentionUnit,\n validity: retentionValidity,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n if (Number.isNaN(retentionValidity) || retentionValidity < 1) {\n setValid(false);\n return;\n }\n setValid(true);\n }, [retentionValidity]);\n\n useEffect(() => {\n if (loadingForm) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/retention`)\n .then((res: IRetentionConfig) => {\n setLoadingForm(false);\n\n // We set default values\n setRetentionMode(res.mode);\n setRetentionValidity(res.validity);\n setRetentionUnit(res.unit);\n })\n .catch((err: ErrorResponseHandler) => {\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 withStyles(styles)(SetRetentionConfig);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","spacingUtils","createTenantCommon","formFieldStyles","modalStyleUtils","classes","open","bucketName","closeModalAndRefresh","dispatch","useAppDispatch","useState","addLoading","setAddLoading","loadingForm","setLoadingForm","retentionMode","setRetentionMode","retentionUnit","setRetentionUnit","retentionValidity","setRetentionValidity","valid","setValid","useEffect","Number","isNaN","api","then","res","mode","validity","unit","catch","err","title","modalOpen","onClose","style","width","height","noValidate","autoComplete","onSubmit","e","preventDefault","setModalErrorSnackMessage","container","item","xs","className","modalFormScrollable","formFieldRow","currentSelection","id","name","label","onChange","target","value","selectorOptions","type","valueAsNumber","String","required","min","modalButtonBar","variant","disabled","onClick","color","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","scroll","event","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.3ecc6022.chunk.js b/portal-ui/build/static/js/1705.3ecc6022.chunk.js
new file mode 100644
index 000000000..4059fa1ab
--- /dev/null
+++ b/portal-ui/build/static/js/1705.3ecc6022.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),o=t(9505),i=t(64554),a=t(56087),c=t(38442),u=t(26181),r=t.n(u),d=t(81918),h=t(29823),f=t(42419),p=t(75578),v=t(75952),T=t(87995),x=t(25469),Z=t(80184),_=(0,p.Z)(s.lazy((function(){return t.e(247).then(t.bind(t,40247))}))),j=(0,p.Z)(s.lazy((function(){return t.e(2408).then(t.bind(t,22763))})));n.default=function(e){var n=e.bucketName,t=(0,x.TL)(),u=(0,s.useState)(null),p=(0,l.Z)(u,2),m=p[0],S=p[1],b=(0,s.useState)(!1),k=(0,l.Z)(b,2),C=k[0],G=k[1],g=(0,s.useState)([]),A=(0,l.Z)(g,2),N=A[0],y=A[1],I=(0,s.useState)(["",""]),U=(0,l.Z)(I,2),E=U[0],F=U[1],O=(0,s.useState)(!1),P=(0,l.Z)(O,2),w=P[0],z=P[1],B=(0,o.Z)((function(e){var n,t;null!=e&&null!=(null===e||void 0===e?void 0:e.details)&&"tags"in(null===e||void 0===e?void 0:e.details)&&(S(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.tags),y(Object.keys(null===e||void 0===e||null===(t=e.details)||void 0===t?void 0:t.tags)))}),(function(e){t((0,T.Ih)(e))})),K=(0,l.Z)(B,2),D=K[0],H=K[1],L=function(){H("GET","/api/v1/buckets/".concat(n))};return(0,s.useEffect)((function(){L()}),[n]),(0,Z.jsxs)(i.Z,{children:[D?(0,Z.jsx)(v.aNw,{style:{width:16,height:16}}):null,(0,Z.jsx)(c.s,{scopes:[a.Ft.S3_GET_BUCKET_TAGGING,a.Ft.S3_GET_ACTIONS],resource:n,children:(0,Z.jsxs)(i.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,Z.jsx)(i.Z,{children:N&&N.map((function(e,t){var l=r()(m,"".concat(e),"");return""!==l?(0,Z.jsx)(c.s,{scopes:[a.Ft.S3_PUT_BUCKET_TAGGING,a.Ft.S3_PUT_ACTIONS],resource:n,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,Z.jsx)(d.Z,{style:{textTransform:"none",marginRight:"5px"},size:"small",label:"".concat(e," : ").concat(l),color:"primary",deleteIcon:(0,Z.jsx)(h.Z,{}),onDelete:function(){!function(e,n){F([e,n]),z(!0)}(e,l)}})},"chip-".concat(t)):null}))}),(0,Z.jsx)(c.s,{scopes:[a.Ft.S3_PUT_BUCKET_TAGGING,a.Ft.S3_PUT_ACTIONS],resource:n,errorProps:{disabled:!0,onClick:null},children:(0,Z.jsx)(d.Z,{style:{maxWidth:80,marginTop:"10px"},icon:(0,Z.jsx)(f.Z,{}),clickable:!0,size:"small",label:"Add tag",color:"primary",variant:"outlined",onClick:function(){G(!0)}})})]})}),C&&(0,Z.jsx)(_,{modalOpen:C,currentTags:m,bucketName:n,onCloseAndUpdate:function(e){G(!1),e&&L()}}),w&&(0,Z.jsx)(j,{deleteOpen:w,currentTags:m,bucketName:n,onCloseAndUpdate:function(e){z(!1),e&&L()},selectedTag:E})]})}},42419:function(e,n,t){var l=t(64836);n.Z=void 0;var s=l(t(45649)),o=t(80184),i=(0,s.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=i}}]);
+//# sourceMappingURL=1705.3ecc6022.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.3ecc6022.chunk.js.map b/portal-ui/build/static/js/1705.3ecc6022.chunk.js.map
new file mode 100644
index 000000000..cd7fe2777
--- /dev/null
+++ b/portal-ui/build/static/js/1705.3ecc6022.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1705.3ecc6022.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx","../node_modules/@mui/icons-material/Add.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;"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","bucketName","dispatch","useAppDispatch","useState","tags","setTags","tagModalOpen","setTagModalOpen","tagKeys","setTagKeys","selectedTag","setSelectedTag","deleteTagModalOpen","setDeleteTagModalOpen","useApi","res","details","Object","keys","err","setErrorSnackMessage","isLoading","invokeTagsApi","fetchTags","useEffect","style","width","height","scopes","IAM_SCOPES","resource","sx","display","flexFlow","map","tagKey","index","tag","get","matchAll","errorProps","deleteIcon","onDelete","textTransform","marginRight","size","label","color","tagLabel","deleteTag","disabled","onClick","maxWidth","marginTop","icon","clickable","variant","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.88e02e9a.chunk.js b/portal-ui/build/static/js/1705.88e02e9a.chunk.js
deleted file mode 100644
index 9939810df..000000000
--- a/portal-ui/build/static/js/1705.88e02e9a.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"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),o=t(9505),i=t(64554),c=t(56087),a=t(38442),u=t(26181),r=t.n(u),d=t(81918),h=t(29823),f=t(42419),p=t(75578),v=t(72401),x=t(87995),T=t(25469),Z=t(80184),j=(0,p.Z)(s.lazy((function(){return t.e(247).then(t.bind(t,40247))}))),m=(0,p.Z)(s.lazy((function(){return t.e(2408).then(t.bind(t,22763))})));n.default=function(e){var n=e.bucketName,t=(0,T.TL)(),u=(0,s.useState)(null),p=(0,l.Z)(u,2),_=p[0],b=p[1],k=(0,s.useState)(!1),S=(0,l.Z)(k,2),g=S[0],C=S[1],G=(0,s.useState)([]),A=(0,l.Z)(G,2),y=A[0],U=A[1],I=(0,s.useState)(["",""]),N=(0,l.Z)(I,2),E=N[0],F=N[1],P=(0,s.useState)(!1),z=(0,l.Z)(P,2),O=z[0],w=z[1],B=(0,o.Z)((function(e){var n,t;null!=e&&null!=(null===e||void 0===e?void 0:e.details)&&"tags"in(null===e||void 0===e?void 0:e.details)&&(b(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.tags),U(Object.keys(null===e||void 0===e||null===(t=e.details)||void 0===t?void 0:t.tags)))}),(function(e){t((0,x.Ih)(e))})),K=(0,l.Z)(B,2),D=K[0],H=K[1],L=function(){H("GET","/api/v1/buckets/".concat(n))};return(0,s.useEffect)((function(){L()}),[n]),(0,Z.jsxs)(i.Z,{children:[D?(0,Z.jsx)(v.Z,{style:{width:16,height:16}}):null,(0,Z.jsx)(a.s,{scopes:[c.Ft.S3_GET_BUCKET_TAGGING],resource:n,children:(0,Z.jsxs)(i.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,Z.jsx)(i.Z,{children:y&&y.map((function(e,t){var l=r()(_,"".concat(e),"");return""!==l?(0,Z.jsx)(a.s,{scopes:[c.Ft.S3_PUT_BUCKET_TAGGING,c.Ft.S3_PUT_ACTIONS],resource:n,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,Z.jsx)(d.Z,{style:{textTransform:"none",marginRight:"5px"},size:"small",label:"".concat(e," : ").concat(l),color:"primary",deleteIcon:(0,Z.jsx)(h.Z,{}),onDelete:function(){!function(e,n){F([e,n]),w(!0)}(e,l)}})},"chip-".concat(t)):null}))}),(0,Z.jsx)(a.s,{scopes:[c.Ft.S3_PUT_BUCKET_TAGGING,c.Ft.S3_PUT_ACTIONS],resource:n,errorProps:{disabled:!0,onClick:null},children:(0,Z.jsx)(d.Z,{style:{maxWidth:80,marginTop:"10px"},icon:(0,Z.jsx)(f.Z,{}),clickable:!0,size:"small",label:"Add tag",color:"primary",variant:"outlined",onClick:function(){C(!0)}})})]})}),g&&(0,Z.jsx)(j,{modalOpen:g,currentTags:_,bucketName:n,onCloseAndUpdate:function(e){C(!1),e&&L()}}),O&&(0,Z.jsx)(m,{deleteOpen:O,currentTags:_,bucketName:n,onCloseAndUpdate:function(e){w(!1),e&&L()},selectedTag:E})]})}},42419:function(e,n,t){var l=t(64836);n.Z=void 0;var s=l(t(45649)),o=t(80184),i=(0,s.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");n.Z=i}}]);
-//# sourceMappingURL=1705.88e02e9a.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1705.88e02e9a.chunk.js.map b/portal-ui/build/static/js/1705.88e02e9a.chunk.js.map
deleted file mode 100644
index 2e8fc7f0c..000000000
--- a/portal-ui/build/static/js/1705.88e02e9a.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1705.88e02e9a.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx","../node_modules/@mui/icons-material/Add.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 \"../../../Common/Loader/Loader\";\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;"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","bucketName","dispatch","useAppDispatch","useState","tags","setTags","tagModalOpen","setTagModalOpen","tagKeys","setTagKeys","selectedTag","setSelectedTag","deleteTagModalOpen","setDeleteTagModalOpen","useApi","res","details","Object","keys","err","setErrorSnackMessage","isLoading","invokeTagsApi","fetchTags","useEffect","style","width","height","scopes","IAM_SCOPES","resource","sx","display","flexFlow","map","tagKey","index","tag","get","matchAll","errorProps","deleteIcon","onDelete","textTransform","marginRight","size","label","color","tagLabel","deleteTag","disabled","onClick","maxWidth","marginTop","icon","clickable","variant","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1799.d2996f85.chunk.js b/portal-ui/build/static/js/1799.b4e6b095.chunk.js
similarity index 96%
rename from portal-ui/build/static/js/1799.d2996f85.chunk.js
rename to portal-ui/build/static/js/1799.b4e6b095.chunk.js
index 8e52e0539..8bca403a6 100644
--- a/portal-ui/build/static/js/1799.d2996f85.chunk.js
+++ b/portal-ui/build/static/js/1799.b4e6b095.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1799],{64163:function(e,n,t){var i=t(1413),r=t(72791),s=t(61889),o=t(11135),a=t(25787),c=t(23814),l=t(80184);n.Z=(0,a.Z)((function(e){return(0,o.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,o=e.content,a=e.multiLine,c=void 0!==a&&a,d=e.actionButton;return(0,l.jsx)(r.Fragment,{children:(0,l.jsxs)(s.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(s.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(s.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(s.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:o}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},61799:function(e,n,t){t.r(n);var i=t(29439),r=t(72791),s=t(51691),o=t(61889),a=t(40986),c=t(81207),l=t(21435),d=t(64163),u=t(37516),f=t(23508),x=t(56096),m=t(87995),h=t(25469),j=t(80184);n.default=function(e){var n=e.closeFormatModalAndRefresh,t=e.deleteOpen,v=e.allDrives,Z=e.drivesToFormat,b=(0,h.TL)(),p=(0,r.useState)(!1),g=(0,i.Z)(p,2),C=g[0],P=g[1],F=(0,r.useState)(""),S=(0,i.Z)(F,2),k=S[0],A=S[1],D=(0,r.useState)(!1),E=(0,i.Z)(D,2),L=E[0],N=E[1];return(0,j.jsx)(f.Z,{title:"Format ".concat(v?"All ":""," Drives"),confirmText:"Format Drive".concat(Z.length>1||v?"s":""),confirmButtonProps:{disabled:"YES, PROCEED"!==k},isOpen:t,isLoading:C,onConfirm:function(){C||(P(!0),c.Z.invoke("POST","/api/v1/directpv/drives/format",{drives:Z,force:L}).then((function(e){P(!1),n(!0,e.formatIssuesList)})).catch((function(e){P(!1),b((0,m.Ih)(e))})))},onClose:function(){n(!1,[])},titleIcon:(0,j.jsx)(x.QaX,{}),confirmationContent:(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(s.Z,{children:[!v&&(0,j.jsxs)(r.Fragment,{children:[(0,j.jsx)(d.Z,{label:"Selected Drive".concat(Z.length>1?"s":""),content:Z.join(", ")}),(0,j.jsx)("br",{})]}),(0,j.jsx)(o.ZP,{item:!0,xs:12,children:(0,j.jsx)(u.Z,{value:"force",id:"force",name:"force",checked:L,onChange:function(e){N(e.target.checked)},label:"Force Format",indicatorLabels:["Yes","No"]})}),"Are you sure you want to format"," ",v?(0,j.jsx)("strong",{children:"All"}):"the selected"," drive",Z.length>1||v?"s":"","?.",(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),(0,j.jsx)("strong",{children:"All information contained will be erased and cannot be recovered"}),(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),"To continue please type ",(0,j.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,j.jsx)(o.ZP,{item:!0,xs:12,children:(0,j.jsx)(l.Z,{id:"format-confirm",name:"format-confirm",onChange:function(e){A(e.target.value)},label:"",value:k})})]}),C&&(0,j.jsx)(a.Z,{})]})})}}}]);
-//# sourceMappingURL=1799.d2996f85.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1799],{64163:function(e,n,t){var i=t(1413),r=t(72791),s=t(61889),o=t(11135),a=t(25787),c=t(23814),l=t(80184);n.Z=(0,a.Z)((function(e){return(0,o.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,o=e.content,a=e.multiLine,c=void 0!==a&&a,d=e.actionButton;return(0,l.jsx)(r.Fragment,{children:(0,l.jsxs)(s.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(s.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(s.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(s.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:o}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},61799:function(e,n,t){t.r(n);var i=t(29439),r=t(72791),s=t(51691),o=t(61889),a=t(40986),c=t(81207),l=t(21435),d=t(64163),u=t(37516),f=t(23508),x=t(75952),m=t(87995),h=t(25469),j=t(80184);n.default=function(e){var n=e.closeFormatModalAndRefresh,t=e.deleteOpen,v=e.allDrives,Z=e.drivesToFormat,b=(0,h.TL)(),p=(0,r.useState)(!1),g=(0,i.Z)(p,2),C=g[0],P=g[1],F=(0,r.useState)(""),S=(0,i.Z)(F,2),k=S[0],A=S[1],D=(0,r.useState)(!1),E=(0,i.Z)(D,2),L=E[0],N=E[1];return(0,j.jsx)(f.Z,{title:"Format ".concat(v?"All ":""," Drives"),confirmText:"Format Drive".concat(Z.length>1||v?"s":""),confirmButtonProps:{disabled:"YES, PROCEED"!==k},isOpen:t,isLoading:C,onConfirm:function(){C||(P(!0),c.Z.invoke("POST","/api/v1/directpv/drives/format",{drives:Z,force:L}).then((function(e){P(!1),n(!0,e.formatIssuesList)})).catch((function(e){P(!1),b((0,m.Ih)(e))})))},onClose:function(){n(!1,[])},titleIcon:(0,j.jsx)(x.QaX,{}),confirmationContent:(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(s.Z,{children:[!v&&(0,j.jsxs)(r.Fragment,{children:[(0,j.jsx)(d.Z,{label:"Selected Drive".concat(Z.length>1?"s":""),content:Z.join(", ")}),(0,j.jsx)("br",{})]}),(0,j.jsx)(o.ZP,{item:!0,xs:12,children:(0,j.jsx)(u.Z,{value:"force",id:"force",name:"force",checked:L,onChange:function(e){N(e.target.checked)},label:"Force Format",indicatorLabels:["Yes","No"]})}),"Are you sure you want to format"," ",v?(0,j.jsx)("strong",{children:"All"}):"the selected"," drive",Z.length>1||v?"s":"","?.",(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),(0,j.jsx)("strong",{children:"All information contained will be erased and cannot be recovered"}),(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),"To continue please type ",(0,j.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,j.jsx)(o.ZP,{item:!0,xs:12,children:(0,j.jsx)(l.Z,{id:"format-confirm",name:"format-confirm",onChange:function(e){A(e.target.value)},label:"",value:k})})]}),C&&(0,j.jsx)(a.Z,{})]})})}}}]);
+//# sourceMappingURL=1799.b4e6b095.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1799.d2996f85.chunk.js.map b/portal-ui/build/static/js/1799.b4e6b095.chunk.js.map
similarity index 52%
rename from portal-ui/build/static/js/1799.d2996f85.chunk.js.map
rename to portal-ui/build/static/js/1799.b4e6b095.chunk.js.map
index 56a08d159..439140ffb 100644
--- a/portal-ui/build/static/js/1799.d2996f85.chunk.js.map
+++ b/portal-ui/build/static/js/1799.b4e6b095.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1799.d2996f85.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/DirectPV/FormatDrives.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n {actionButton}
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText, Grid, LinearProgress } from \"@mui/material\";\nimport { IDirectPVFormatResItem, IDirectPVFormatResult } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport PredefinedList from \"../Common/FormComponents/PredefinedList/PredefinedList\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { FormatDrivesIcon } from \"../../../icons\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IFormatAllDrivesProps {\n closeFormatModalAndRefresh: (\n refresh: boolean,\n formatIssuesList: IDirectPVFormatResItem[]\n ) => void;\n deleteOpen: boolean;\n allDrives: boolean;\n drivesToFormat: string[];\n}\n\nconst FormatDrives = ({\n closeFormatModalAndRefresh,\n deleteOpen,\n allDrives,\n drivesToFormat,\n}: IFormatAllDrivesProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [formatAll, setFormatAll] = useState(\"\");\n const [force, setForce] = useState(false);\n\n const removeRecord = () => {\n if (deleteLoading) {\n return;\n }\n setDeleteLoading(true);\n api\n .invoke(\"POST\", `/api/v1/directpv/drives/format`, {\n drives: drivesToFormat,\n force,\n })\n .then((res: IDirectPVFormatResult) => {\n setDeleteLoading(false);\n closeFormatModalAndRefresh(true, res.formatIssuesList);\n })\n .catch((err: ErrorResponseHandler) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n return (\n 1 || allDrives ? \"s\" : \"\"\n }`}\n confirmButtonProps={{\n disabled: formatAll !== \"YES, PROCEED\",\n }}\n isOpen={deleteOpen}\n isLoading={deleteLoading}\n onConfirm={removeRecord}\n onClose={() => {\n closeFormatModalAndRefresh(false, []);\n }}\n titleIcon={ }\n confirmationContent={\n \n \n {!allDrives && (\n \n 1 ? \"s\" : \"\"\n }`}\n content={drivesToFormat.join(\", \")}\n />\n \n \n )}\n \n ) => {\n setForce(event.target.checked);\n }}\n label={\"Force Format\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n Are you sure you want to format{\" \"}\n {allDrives ? All : \"the selected\"} drive\n {drivesToFormat.length > 1 || allDrives ? \"s\" : \"\"}?.\n \n \n \n All information contained will be erased and cannot be recovered\n \n \n \n To continue please type YES, PROCEED in the box.\n \n ) => {\n setFormatAll(event.target.value);\n }}\n label=\"\"\n value={formatAll}\n />\n \n \n {deleteLoading && }\n \n }\n />\n );\n};\n\nexport default FormatDrives;\n"],"names":["withStyles","theme","createStyles","predefinedList","classes","label","content","multiLine","actionButton","Fragment","className","prefinedContainer","item","xs","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","closeFormatModalAndRefresh","deleteOpen","allDrives","drivesToFormat","dispatch","useAppDispatch","useState","deleteLoading","setDeleteLoading","formatAll","setFormatAll","force","setForce","title","confirmText","length","confirmButtonProps","disabled","isOpen","isLoading","onConfirm","api","drives","then","res","formatIssuesList","catch","err","setErrorSnackMessage","onClose","titleIcon","confirmationContent","join","value","id","name","checked","onChange","event","target","indicatorLabels"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1799.b4e6b095.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/DirectPV/FormatDrives.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n {actionButton}
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText, Grid, LinearProgress } from \"@mui/material\";\nimport { IDirectPVFormatResItem, IDirectPVFormatResult } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport PredefinedList from \"../Common/FormComponents/PredefinedList/PredefinedList\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { FormatDrivesIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IFormatAllDrivesProps {\n closeFormatModalAndRefresh: (\n refresh: boolean,\n formatIssuesList: IDirectPVFormatResItem[]\n ) => void;\n deleteOpen: boolean;\n allDrives: boolean;\n drivesToFormat: string[];\n}\n\nconst FormatDrives = ({\n closeFormatModalAndRefresh,\n deleteOpen,\n allDrives,\n drivesToFormat,\n}: IFormatAllDrivesProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [formatAll, setFormatAll] = useState(\"\");\n const [force, setForce] = useState(false);\n\n const removeRecord = () => {\n if (deleteLoading) {\n return;\n }\n setDeleteLoading(true);\n api\n .invoke(\"POST\", `/api/v1/directpv/drives/format`, {\n drives: drivesToFormat,\n force,\n })\n .then((res: IDirectPVFormatResult) => {\n setDeleteLoading(false);\n closeFormatModalAndRefresh(true, res.formatIssuesList);\n })\n .catch((err: ErrorResponseHandler) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n return (\n 1 || allDrives ? \"s\" : \"\"\n }`}\n confirmButtonProps={{\n disabled: formatAll !== \"YES, PROCEED\",\n }}\n isOpen={deleteOpen}\n isLoading={deleteLoading}\n onConfirm={removeRecord}\n onClose={() => {\n closeFormatModalAndRefresh(false, []);\n }}\n titleIcon={ }\n confirmationContent={\n \n \n {!allDrives && (\n \n 1 ? \"s\" : \"\"\n }`}\n content={drivesToFormat.join(\", \")}\n />\n \n \n )}\n \n ) => {\n setForce(event.target.checked);\n }}\n label={\"Force Format\"}\n indicatorLabels={[\"Yes\", \"No\"]}\n />\n \n Are you sure you want to format{\" \"}\n {allDrives ? All : \"the selected\"} drive\n {drivesToFormat.length > 1 || allDrives ? \"s\" : \"\"}?.\n \n \n \n All information contained will be erased and cannot be recovered\n \n \n \n To continue please type YES, PROCEED in the box.\n \n ) => {\n setFormatAll(event.target.value);\n }}\n label=\"\"\n value={formatAll}\n />\n \n \n {deleteLoading && }\n \n }\n />\n );\n};\n\nexport default FormatDrives;\n"],"names":["withStyles","theme","createStyles","predefinedList","classes","label","content","multiLine","actionButton","Fragment","className","prefinedContainer","item","xs","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","closeFormatModalAndRefresh","deleteOpen","allDrives","drivesToFormat","dispatch","useAppDispatch","useState","deleteLoading","setDeleteLoading","formatAll","setFormatAll","force","setForce","title","confirmText","length","confirmButtonProps","disabled","isOpen","isLoading","onConfirm","api","drives","then","res","formatIssuesList","catch","err","setErrorSnackMessage","onClose","titleIcon","confirmationContent","join","value","id","name","checked","onChange","event","target","indicatorLabels"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1829.dddf5fc0.chunk.js b/portal-ui/build/static/js/1829.dddf5fc0.chunk.js
deleted file mode 100644
index 96e91bf97..000000000
--- a/portal-ui/build/static/js/1829.dddf5fc0.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1829],{23804:function(e,n,t){t(72791);var a=t(11135),o=t(25787),i=t(61889),r=t(80184);n.Z=(0,o.Z)((function(e){return(0,a.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var n=e.classes,t=e.iconComponent,a=e.title,o=e.help;return(0,r.jsx)("div",{className:n.root,children:(0,r.jsxs)(i.ZP,{container:!0,children:[(0,r.jsxs)(i.ZP,{item:!0,xs:12,className:n.leftItems,children:[t,a]}),(0,r.jsx)(i.ZP,{item:!0,xs:12,className:n.helpText,children:o})]})})}))},47986:function(e,n,t){t(72791);var a=t(61889),o=t(64554),i=t(23804),r=t(80184);n.Z=function(e){var n=e.iconComponent,t=e.entity;return(0,r.jsx)(a.ZP,{container:!0,alignItems:"center",children:(0,r.jsx)(a.ZP,{item:!0,xs:12,children:(0,r.jsx)(i.Z,{title:"".concat(t," not available"),iconComponent:n,help:(0,r.jsxs)(o.Z,{sx:{fontSize:"14px",display:"flex",border:"none",flexFlow:{xs:"column",md:"row"},"& a":{color:function(e){return e.colors.link},textDecoration:"underline"}},children:[(0,r.jsx)("div",{children:"This feature is not available for a single-disk setup."}),(0,r.jsxs)("div",{children:["Please deploy a server in"," ",(0,r.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noreferrer",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},34866:function(e,n,t){var a=t(1413),o=t(72791),i=t(61889),r=t(94454),s=t(30829),c=t(20068),l=t(11135),d=t(25787),u=t(23814),f=t(84570),h=t(80184);n.Z=(0,d.Z)((function(e){return(0,l.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},u.YI),u.Hr),u.lM),{},{fieldContainer:(0,a.Z)((0,a.Z)({},u.YI.fieldContainer),{},{display:"flex",justifyContent:"flex-start",alignItems:"center",margin:"15px 0",marginBottom:0,flexBasis:"initial",flexWrap:"nowrap"}),noTopMargin:{marginTop:0}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,l=e.id,d=e.name,u=e.checked,p=void 0!==u&&u,x=e.disabled,m=void 0!==x&&x,b=e.noTopMargin,g=void 0!==b&&b,j=e.tooltip,Z=void 0===j?"":j,v=e.overrideLabelClasses,k=void 0===v?"":v,S=e.overrideCheckboxStyles,C=e.classes,y=e.className;return(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(C.fieldContainer," ").concat(g?C.noTopMargin:""," ").concat(y||""),children:[(0,h.jsx)("div",{children:(0,h.jsx)(r.Z,{name:d,id:l,value:a,color:"primary",inputProps:{"aria-label":"secondary checkbox"},checked:p,onChange:t,checkedIcon:(0,h.jsx)("span",{className:C.checkedIcon}),icon:(0,h.jsx)("span",{className:C.unCheckedIcon}),disabled:m,disableRipple:!0,disableFocusRipple:!0,focusRipple:!1,centerRipple:!1,disableTouchRipple:!0,style:S||{}})}),""!==n&&(0,h.jsxs)(s.Z,{htmlFor:l,className:"".concat(C.noMinWidthLabel," ").concat(k),children:[(0,h.jsx)("span",{children:n}),""!==Z&&(0,h.jsx)("div",{className:C.tooltipContainer,children:(0,h.jsx)(c.Z,{title:Z,placement:"top-start",children:(0,h.jsx)("div",{className:C.tooltip,children:(0,h.jsx)(f.Z,{})})})})]})]})})}))},61829:function(e,n,t){t.r(n);var a=t(29439),o=t(1413),i=t(72791),r=t(78687),s=t(28353),c=t(4834),l=t(61889),d=t(68096),u=t(58406),f=t(23786),h=t(27391),p=t(95087),x=t(75952),m=t(11135),b=t(25787),g=t(26824),j=t(45248),Z=t(23814),v=t(56087),k=t(56096),S=t(34866),C=t(32291),y=t(81207),N=t(74794),w=t(38442),H=t(47986),I=t(87995),R=t(72455),E=t(80184),F=(0,R.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({graphContainer:{backgroundColor:"#fff",border:"#EAEDEE 1px solid",borderRadius:3,padding:"19px 38px",marginTop:15},scanInfo:{marginTop:20,display:"flex",flexDirection:"row",justifyContent:"space-between"},scanData:{fontSize:13},formBox:{padding:15,border:"1px solid #EAEAEA"},buttonBar:{display:"flex",alignItems:"center",justifyContent:"flex-end"},bucketField:{flex:1},prefixField:(0,o.Z)((0,o.Z)({},Z.qg.searchField),{},{marginLeft:10,flex:1}),actionsTray:(0,o.Z)((0,o.Z)({},Z.OR.actionsTray),{},{marginBottom:0})},Z.IX),Z.qg),(0,Z.Bz)(e.spacing(4))))})),P=(0,b.Z)((function(e){return(0,m.Z)({root:{lineHeight:"50px",marginRight:15,"label + &":{marginTop:e.spacing(3)},"& .MuiSelect-select:focus":{backgroundColor:"transparent"}}})}))(c.ZP);n.default=function(){var e=F(),n=(0,r.v9)(I.N5),t=(0,i.useState)(!1),o=(0,a.Z)(t,2),c=o[0],m=o[1],b=(0,i.useState)(""),Z=(0,a.Z)(b,2),R=Z[0],T=Z[1],B=(0,i.useState)([]),D=(0,a.Z)(B,2),z=D[0],A=D[1],G=(0,i.useState)(""),L=(0,a.Z)(G,2),M=L[0],W=L[1],Y=(0,i.useState)(!1),O=(0,a.Z)(Y,2),U=O[0],_=O[1],q=(0,i.useState)(!1),J=(0,a.Z)(q,2),V=J[0],X=J[1],K=(0,i.useState)(!1),Q=(0,a.Z)(K,2),$=Q[0],ee=Q[1],ne=(0,i.useState)({beforeHeal:[0,0,0,0],afterHeal:[0,0,0,0],objectsHealed:0,objectsScanned:0,healDuration:0,sizeScanned:""}),te=(0,a.Z)(ne,2),ae=te[0],oe=te[1];(0,i.useEffect)((function(){y.Z.invoke("GET","/api/v1/buckets").then((function(e){var n=[];null!==e.buckets&&(n=e.buckets),A(n)})).catch((function(e){console.error(e)}))}),[]),(0,i.useEffect)((function(){!0===V&&ee(!1)}),[V]),(0,i.useEffect)((function(){!0===$&&X(!1)}),[$]);var ie=function(e){return[e.Green,e.Yellow,e.Red,e.Grey]};(0,i.useEffect)((function(){if(c){var e={Green:0,Yellow:0,Red:0,Grey:0},n={Green:0,Yellow:0,Red:0,Grey:0},t=new URL(window.location.toString()),o=t.port,i=new URL(document.baseURI).pathname,r=(0,g.x2)(t.protocol),s=new p.w3cwebsocket("".concat(r,"://").concat(t.hostname,":").concat(o).concat(i,"ws/heal/").concat(R,"?prefix=").concat(M,"&recursive=").concat(U,"&force-start=").concat(V,"&force-stop=").concat($));if(null!==s)return s.onopen=function(){console.log("WebSocket Client Connected"),s.send("ok")},s.onmessage=function(t){for(var o=JSON.parse(t.data.toString()),i=0,r=Object.entries(o.healthAfterCols);i .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport HelpBox from \"../../../../common/HelpBox\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n theme.colors.link,\n textDecoration: \"underline\",\n },\n }}\n >\n This feature is not available for a single-disk setup.
\n\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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 { Checkbox, Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n checkboxIcons,\n fieldBasic,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\ninterface CheckBoxProps {\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 overrideLabelClasses?: string;\n overrideCheckboxStyles?: React.CSSProperties;\n index?: number;\n noTopMargin?: boolean;\n checked: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n ...checkboxIcons,\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n margin: \"15px 0\",\n marginBottom: 0,\n flexBasis: \"initial\",\n flexWrap: \"nowrap\",\n },\n noTopMargin: {\n marginTop: 0,\n },\n });\n\nconst CheckboxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n noTopMargin = false,\n tooltip = \"\",\n overrideLabelClasses = \"\",\n overrideCheckboxStyles,\n classes,\n className,\n}: CheckBoxProps) => {\n return (\n \n \n \n }\n icon={ }\n disabled={disabled}\n disableRipple\n disableFocusRipple\n focusRipple={false}\n centerRipple={false}\n disableTouchRipple\n style={overrideCheckboxStyles || {}}\n />\n
\n {label !== \"\" && (\n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { HorizontalBar } from \"react-chartjs-2\";\nimport {\n FormControl,\n Grid,\n InputBase,\n MenuItem,\n Select,\n TextField,\n} from \"@mui/material\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { Bucket, BucketList } from \"../Watch/types\";\nimport { colorH, HealStatus } from \"./types\";\nimport { niceBytes } from \"../../../common/utils\";\nimport {\n actionsTray,\n containerForHeader,\n inlineCheckboxes,\n searchField,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { HealIcon } from \"../../../icons\";\nimport CheckboxWrapper from \"../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport api from \"../../../common/api\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport { selDistSet } from \"../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n graphContainer: {\n backgroundColor: \"#fff\",\n border: \"#EAEDEE 1px solid\",\n borderRadius: 3,\n padding: \"19px 38px\",\n marginTop: 15,\n },\n scanInfo: {\n marginTop: 20,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n scanData: {\n fontSize: 13,\n },\n formBox: {\n padding: 15,\n border: \"1px solid #EAEAEA\",\n },\n buttonBar: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n bucketField: {\n flex: 1,\n },\n prefixField: {\n ...searchField.searchField,\n marginLeft: 10,\n flex: 1,\n },\n actionsTray: {\n ...actionsTray.actionsTray,\n marginBottom: 0,\n },\n ...inlineCheckboxes,\n ...searchField,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n lineHeight: \"50px\",\n marginRight: 15,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n \"& .MuiSelect-select:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n })\n)(InputBase);\n\nconst Heal = () => {\n const classes = useStyles();\n const distributedSetup = useSelector(selDistSet);\n\n const [start, setStart] = useState(false);\n const [bucketName, setBucketName] = useState(\"\");\n const [bucketList, setBucketList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [recursive, setRecursive] = useState(false);\n const [forceStart, setForceStart] = useState(false);\n const [forceStop, setForceStop] = useState(false);\n // healStatus states\n const [hStatus, setHStatus] = useState({\n beforeHeal: [0, 0, 0, 0],\n afterHeal: [0, 0, 0, 0],\n objectsHealed: 0,\n objectsScanned: 0,\n healDuration: 0,\n sizeScanned: \"\",\n });\n\n const fetchBucketList = () => {\n api\n .invoke(\"GET\", `/api/v1/buckets`)\n .then((res: BucketList) => {\n let buckets: Bucket[] = [];\n if (res.buckets !== null) {\n buckets = res.buckets;\n }\n setBucketList(buckets);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n });\n };\n\n useEffect(() => {\n fetchBucketList();\n }, []);\n\n // forceStart and forceStop need to be mutually exclusive\n useEffect(() => {\n if (forceStart === true) {\n setForceStop(false);\n }\n }, [forceStart]);\n\n useEffect(() => {\n if (forceStop === true) {\n setForceStart(false);\n }\n }, [forceStop]);\n\n const colorHealthArr = (color: colorH) => {\n return [color.Green, color.Yellow, color.Red, color.Grey];\n };\n\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (start) {\n // values stored here to update chart\n const cB: colorH = { Green: 0, Yellow: 0, Red: 0, Grey: 0 };\n const cA: colorH = { Green: 0, Yellow: 0, Red: 0, Grey: 0 };\n\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n // check if we are using base path, if not this always is `/`\n const baseLocation = new URL(document.baseURI);\n const baseUrl = baseLocation.pathname;\n\n const wsProt = wsProtocol(url.protocol);\n const c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/heal/${bucketName}?prefix=${prefix}&recursive=${recursive}&force-start=${forceStart}&force-stop=${forceStop}`\n );\n\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: HealStatus = JSON.parse(message.data.toString());\n // Store percentage per health color\n for (const [key, value] of Object.entries(m.healthAfterCols)) {\n cA[key] = (value * 100) / m.itemsScanned;\n }\n for (const [key, value] of Object.entries(m.healthBeforeCols)) {\n cB[key] = (value * 100) / m.itemsScanned;\n }\n setHStatus({\n beforeHeal: colorHealthArr(cB),\n afterHeal: colorHealthArr(cA),\n objectsHealed: m.objectsHealed,\n objectsScanned: m.objectsScanned,\n healDuration: m.healDuration,\n sizeScanned: niceBytes(m.bytesScanned.toString()),\n });\n };\n c.onclose = () => {\n setStart(false);\n console.log(\"connection closed by server\");\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n console.log(\"closing websockets\");\n };\n }\n }\n }, [start, bucketName, forceStart, forceStop, prefix, recursive]);\n\n let data = {\n labels: [\"Green\", \"Yellow\", \"Red\", \"Grey\"],\n datasets: [\n {\n label: \"After Healing\",\n data: hStatus.afterHeal,\n backgroundColor: \"rgba(0, 0, 255, 0.2)\",\n borderColor: \"rgba(54, 162, 235, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Before Healing\",\n data: hStatus.beforeHeal,\n backgroundColor: \"rgba(153, 102, 255, 0.2)\",\n borderColor: \"rgba(153, 102, 255, 1)\",\n borderWidth: 1,\n },\n ],\n };\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n\n return (\n \n \n \n {!distributedSetup ? (\n } />\n ) : (\n \n \n \n \n {\n setBucketName(e.target.value as string);\n }}\n className={classes.searchField}\n input={ }\n displayEmpty\n >\n \n Select Bucket\n \n {bucketNames.map((option) => (\n \n {option.label}\n \n ))}\n \n \n {\n setPrefix(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n setRecursive(e.target.checked);\n }}\n disabled={false}\n label=\"Recursive\"\n />\n {\n setForceStart(e.target.checked);\n }}\n disabled={false}\n label=\"Force Start\"\n />\n {\n setForceStop(e.target.checked);\n }}\n disabled={false}\n label=\"Force Stop\"\n />\n \n \n setStart(true)}\n label={\"Start\"}\n />\n \n \n \n \n \n \n Size scanned: {hStatus.sizeScanned}\n
\n \n Objects healed: {hStatus.objectsHealed} /{\" \"}\n {hStatus.objectsScanned}\n
\n \n Healing time: {hStatus.healDuration}s\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default Heal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// Close codes for websockets defined in RFC 6455\nexport const WSCloseNormalClosure = 1000;\nexport const WSCloseCloseGoingAway = 1001;\nexport const WSCloseAbnormalClosure = 1006;\nexport const WSClosePolicyViolation = 1008;\nexport const WSCloseInternalServerErr = 1011;\n\nexport const wsProtocol = (protocol: string): string => {\n let wsProtocol = \"ws\";\n if (protocol === \"https:\") {\n wsProtocol = \"wss\";\n }\n return wsProtocol;\n};\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","entity","sx","flexFlow","md","color","colors","link","textDecoration","href","target","rel","fieldBasic","tooltipHelper","checkboxIcons","fieldContainer","justifyContent","margin","flexBasis","flexWrap","noTopMargin","marginTop","label","onChange","value","id","name","checked","disabled","tooltip","overrideLabelClasses","overrideCheckboxStyles","inputProps","checkedIcon","icon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","style","htmlFor","noMinWidthLabel","tooltipContainer","placement","useStyles","makeStyles","graphContainer","padding","scanInfo","flexDirection","scanData","formBox","buttonBar","bucketField","flex","prefixField","searchField","marginLeft","actionsTray","inlineCheckboxes","containerForHeader","spacing","SelectStyled","lineHeight","InputBase","distributedSetup","useSelector","selDistSet","useState","start","setStart","bucketName","setBucketName","bucketList","setBucketList","prefix","setPrefix","recursive","setRecursive","forceStart","setForceStart","forceStop","setForceStop","beforeHeal","afterHeal","objectsHealed","objectsScanned","healDuration","sizeScanned","hStatus","setHStatus","useEffect","api","then","res","buckets","catch","err","console","error","colorHealthArr","Green","Yellow","Red","Grey","cB","cA","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","hostname","onopen","log","send","onmessage","message","m","JSON","parse","data","Object","entries","healthAfterCols","key","itemsScanned","healthBeforeCols","niceBytes","bytesScanned","onclose","close","labels","datasets","borderColor","borderWidth","bucketNames","map","Fragment","scopes","IAM_SCOPES","resource","CONSOLE_UI_RESOURCE","variant","e","input","displayEmpty","option","InputProps","disableUnderline","type","onClick","options","text","legend","position","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1829.ebfd458a.chunk.js b/portal-ui/build/static/js/1829.ebfd458a.chunk.js
new file mode 100644
index 000000000..115bc7370
--- /dev/null
+++ b/portal-ui/build/static/js/1829.ebfd458a.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1829],{23804:function(e,n,t){t(72791);var a=t(11135),o=t(25787),i=t(61889),r=t(80184);n.Z=(0,o.Z)((function(e){return(0,a.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var n=e.classes,t=e.iconComponent,a=e.title,o=e.help;return(0,r.jsx)("div",{className:n.root,children:(0,r.jsxs)(i.ZP,{container:!0,children:[(0,r.jsxs)(i.ZP,{item:!0,xs:12,className:n.leftItems,children:[t,a]}),(0,r.jsx)(i.ZP,{item:!0,xs:12,className:n.helpText,children:o})]})})}))},47986:function(e,n,t){t(72791);var a=t(61889),o=t(64554),i=t(23804),r=t(80184);n.Z=function(e){var n=e.iconComponent,t=e.entity;return(0,r.jsx)(a.ZP,{container:!0,alignItems:"center",children:(0,r.jsx)(a.ZP,{item:!0,xs:12,children:(0,r.jsx)(i.Z,{title:"".concat(t," not available"),iconComponent:n,help:(0,r.jsxs)(o.Z,{sx:{fontSize:"14px",display:"flex",border:"none",flexFlow:{xs:"column",md:"row"},"& a":{color:function(e){return e.colors.link},textDecoration:"underline"}},children:[(0,r.jsx)("div",{children:"This feature is not available for a single-disk setup."}),(0,r.jsxs)("div",{children:["Please deploy a server in"," ",(0,r.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noreferrer",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},34866:function(e,n,t){var a=t(1413),o=t(72791),i=t(61889),r=t(94454),s=t(30829),c=t(20068),l=t(11135),d=t(25787),u=t(23814),f=t(75952),h=t(80184);n.Z=(0,d.Z)((function(e){return(0,l.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},u.YI),u.Hr),u.lM),{},{fieldContainer:(0,a.Z)((0,a.Z)({},u.YI.fieldContainer),{},{display:"flex",justifyContent:"flex-start",alignItems:"center",margin:"15px 0",marginBottom:0,flexBasis:"initial",flexWrap:"nowrap"}),noTopMargin:{marginTop:0}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,l=e.id,d=e.name,u=e.checked,p=void 0!==u&&u,x=e.disabled,m=void 0!==x&&x,b=e.noTopMargin,g=void 0!==b&&b,j=e.tooltip,Z=void 0===j?"":j,v=e.overrideLabelClasses,k=void 0===v?"":v,S=e.overrideCheckboxStyles,C=e.classes,y=e.className;return(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(C.fieldContainer," ").concat(g?C.noTopMargin:""," ").concat(y||""),children:[(0,h.jsx)("div",{children:(0,h.jsx)(r.Z,{name:d,id:l,value:a,color:"primary",inputProps:{"aria-label":"secondary checkbox"},checked:p,onChange:t,checkedIcon:(0,h.jsx)("span",{className:C.checkedIcon}),icon:(0,h.jsx)("span",{className:C.unCheckedIcon}),disabled:m,disableRipple:!0,disableFocusRipple:!0,focusRipple:!1,centerRipple:!1,disableTouchRipple:!0,style:S||{}})}),""!==n&&(0,h.jsxs)(s.Z,{htmlFor:l,className:"".concat(C.noMinWidthLabel," ").concat(k),children:[(0,h.jsx)("span",{children:n}),""!==Z&&(0,h.jsx)("div",{className:C.tooltipContainer,children:(0,h.jsx)(c.Z,{title:Z,placement:"top-start",children:(0,h.jsx)("div",{className:C.tooltip,children:(0,h.jsx)(f.byK,{})})})})]})]})})}))},61829:function(e,n,t){t.r(n);var a=t(29439),o=t(1413),i=t(72791),r=t(78687),s=t(28353),c=t(4834),l=t(61889),d=t(68096),u=t(58406),f=t(23786),h=t(27391),p=t(95087),x=t(75952),m=t(11135),b=t(25787),g=t(26824),j=t(45248),Z=t(23814),v=t(56087),k=t(34866),S=t(32291),C=t(81207),y=t(74794),N=t(38442),w=t(47986),H=t(87995),I=t(72455),R=t(80184),E=(0,I.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({graphContainer:{backgroundColor:"#fff",border:"#EAEDEE 1px solid",borderRadius:3,padding:"19px 38px",marginTop:15},scanInfo:{marginTop:20,display:"flex",flexDirection:"row",justifyContent:"space-between"},scanData:{fontSize:13},formBox:{padding:15,border:"1px solid #EAEAEA"},buttonBar:{display:"flex",alignItems:"center",justifyContent:"flex-end"},bucketField:{flex:1},prefixField:(0,o.Z)((0,o.Z)({},Z.qg.searchField),{},{marginLeft:10,flex:1}),actionsTray:(0,o.Z)((0,o.Z)({},Z.OR.actionsTray),{},{marginBottom:0})},Z.IX),Z.qg),(0,Z.Bz)(e.spacing(4))))})),F=(0,b.Z)((function(e){return(0,m.Z)({root:{lineHeight:"50px",marginRight:15,"label + &":{marginTop:e.spacing(3)},"& .MuiSelect-select:focus":{backgroundColor:"transparent"}}})}))(c.ZP);n.default=function(){var e=E(),n=(0,r.v9)(H.N5),t=(0,i.useState)(!1),o=(0,a.Z)(t,2),c=o[0],m=o[1],b=(0,i.useState)(""),Z=(0,a.Z)(b,2),I=Z[0],P=Z[1],T=(0,i.useState)([]),B=(0,a.Z)(T,2),D=B[0],z=B[1],A=(0,i.useState)(""),G=(0,a.Z)(A,2),L=G[0],M=G[1],W=(0,i.useState)(!1),Y=(0,a.Z)(W,2),O=Y[0],U=Y[1],_=(0,i.useState)(!1),q=(0,a.Z)(_,2),J=q[0],K=q[1],V=(0,i.useState)(!1),X=(0,a.Z)(V,2),Q=X[0],$=X[1],ee=(0,i.useState)({beforeHeal:[0,0,0,0],afterHeal:[0,0,0,0],objectsHealed:0,objectsScanned:0,healDuration:0,sizeScanned:""}),ne=(0,a.Z)(ee,2),te=ne[0],ae=ne[1];(0,i.useEffect)((function(){C.Z.invoke("GET","/api/v1/buckets").then((function(e){var n=[];null!==e.buckets&&(n=e.buckets),z(n)})).catch((function(e){console.error(e)}))}),[]),(0,i.useEffect)((function(){!0===J&&$(!1)}),[J]),(0,i.useEffect)((function(){!0===Q&&K(!1)}),[Q]);var oe=function(e){return[e.Green,e.Yellow,e.Red,e.Grey]};(0,i.useEffect)((function(){if(c){var e={Green:0,Yellow:0,Red:0,Grey:0},n={Green:0,Yellow:0,Red:0,Grey:0},t=new URL(window.location.toString()),o=t.port,i=new URL(document.baseURI).pathname,r=(0,g.x2)(t.protocol),s=new p.w3cwebsocket("".concat(r,"://").concat(t.hostname,":").concat(o).concat(i,"ws/heal/").concat(I,"?prefix=").concat(L,"&recursive=").concat(O,"&force-start=").concat(J,"&force-stop=").concat(Q));if(null!==s)return s.onopen=function(){console.log("WebSocket Client Connected"),s.send("ok")},s.onmessage=function(t){for(var o=JSON.parse(t.data.toString()),i=0,r=Object.entries(o.healthAfterCols);i .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport HelpBox from \"../../../../common/HelpBox\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n theme.colors.link,\n textDecoration: \"underline\",\n },\n }}\n >\n This feature is not available for a single-disk setup.
\n\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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 { Checkbox, Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n checkboxIcons,\n fieldBasic,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface CheckBoxProps {\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 overrideLabelClasses?: string;\n overrideCheckboxStyles?: React.CSSProperties;\n index?: number;\n noTopMargin?: boolean;\n checked: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n ...checkboxIcons,\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n margin: \"15px 0\",\n marginBottom: 0,\n flexBasis: \"initial\",\n flexWrap: \"nowrap\",\n },\n noTopMargin: {\n marginTop: 0,\n },\n });\n\nconst CheckboxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n noTopMargin = false,\n tooltip = \"\",\n overrideLabelClasses = \"\",\n overrideCheckboxStyles,\n classes,\n className,\n}: CheckBoxProps) => {\n return (\n \n \n \n }\n icon={ }\n disabled={disabled}\n disableRipple\n disableFocusRipple\n focusRipple={false}\n centerRipple={false}\n disableTouchRipple\n style={overrideCheckboxStyles || {}}\n />\n
\n {label !== \"\" && (\n \n {label} \n {tooltip !== \"\" && (\n \n )}\n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { HorizontalBar } from \"react-chartjs-2\";\nimport {\n FormControl,\n Grid,\n InputBase,\n MenuItem,\n Select,\n TextField,\n} from \"@mui/material\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { Bucket, BucketList } from \"../Watch/types\";\nimport { colorH, HealStatus } from \"./types\";\nimport { niceBytes } from \"../../../common/utils\";\nimport {\n actionsTray,\n containerForHeader,\n inlineCheckboxes,\n searchField,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { HealIcon } from \"mds\";\nimport CheckboxWrapper from \"../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport api from \"../../../common/api\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport { selDistSet } from \"../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n graphContainer: {\n backgroundColor: \"#fff\",\n border: \"#EAEDEE 1px solid\",\n borderRadius: 3,\n padding: \"19px 38px\",\n marginTop: 15,\n },\n scanInfo: {\n marginTop: 20,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n scanData: {\n fontSize: 13,\n },\n formBox: {\n padding: 15,\n border: \"1px solid #EAEAEA\",\n },\n buttonBar: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n bucketField: {\n flex: 1,\n },\n prefixField: {\n ...searchField.searchField,\n marginLeft: 10,\n flex: 1,\n },\n actionsTray: {\n ...actionsTray.actionsTray,\n marginBottom: 0,\n },\n ...inlineCheckboxes,\n ...searchField,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n lineHeight: \"50px\",\n marginRight: 15,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n \"& .MuiSelect-select:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n })\n)(InputBase);\n\nconst Heal = () => {\n const classes = useStyles();\n const distributedSetup = useSelector(selDistSet);\n\n const [start, setStart] = useState(false);\n const [bucketName, setBucketName] = useState(\"\");\n const [bucketList, setBucketList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [recursive, setRecursive] = useState(false);\n const [forceStart, setForceStart] = useState(false);\n const [forceStop, setForceStop] = useState(false);\n // healStatus states\n const [hStatus, setHStatus] = useState({\n beforeHeal: [0, 0, 0, 0],\n afterHeal: [0, 0, 0, 0],\n objectsHealed: 0,\n objectsScanned: 0,\n healDuration: 0,\n sizeScanned: \"\",\n });\n\n const fetchBucketList = () => {\n api\n .invoke(\"GET\", `/api/v1/buckets`)\n .then((res: BucketList) => {\n let buckets: Bucket[] = [];\n if (res.buckets !== null) {\n buckets = res.buckets;\n }\n setBucketList(buckets);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n });\n };\n\n useEffect(() => {\n fetchBucketList();\n }, []);\n\n // forceStart and forceStop need to be mutually exclusive\n useEffect(() => {\n if (forceStart === true) {\n setForceStop(false);\n }\n }, [forceStart]);\n\n useEffect(() => {\n if (forceStop === true) {\n setForceStart(false);\n }\n }, [forceStop]);\n\n const colorHealthArr = (color: colorH) => {\n return [color.Green, color.Yellow, color.Red, color.Grey];\n };\n\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (start) {\n // values stored here to update chart\n const cB: colorH = { Green: 0, Yellow: 0, Red: 0, Grey: 0 };\n const cA: colorH = { Green: 0, Yellow: 0, Red: 0, Grey: 0 };\n\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n // check if we are using base path, if not this always is `/`\n const baseLocation = new URL(document.baseURI);\n const baseUrl = baseLocation.pathname;\n\n const wsProt = wsProtocol(url.protocol);\n const c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/heal/${bucketName}?prefix=${prefix}&recursive=${recursive}&force-start=${forceStart}&force-stop=${forceStop}`\n );\n\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: HealStatus = JSON.parse(message.data.toString());\n // Store percentage per health color\n for (const [key, value] of Object.entries(m.healthAfterCols)) {\n cA[key] = (value * 100) / m.itemsScanned;\n }\n for (const [key, value] of Object.entries(m.healthBeforeCols)) {\n cB[key] = (value * 100) / m.itemsScanned;\n }\n setHStatus({\n beforeHeal: colorHealthArr(cB),\n afterHeal: colorHealthArr(cA),\n objectsHealed: m.objectsHealed,\n objectsScanned: m.objectsScanned,\n healDuration: m.healDuration,\n sizeScanned: niceBytes(m.bytesScanned.toString()),\n });\n };\n c.onclose = () => {\n setStart(false);\n console.log(\"connection closed by server\");\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n console.log(\"closing websockets\");\n };\n }\n }\n }, [start, bucketName, forceStart, forceStop, prefix, recursive]);\n\n let data = {\n labels: [\"Green\", \"Yellow\", \"Red\", \"Grey\"],\n datasets: [\n {\n label: \"After Healing\",\n data: hStatus.afterHeal,\n backgroundColor: \"rgba(0, 0, 255, 0.2)\",\n borderColor: \"rgba(54, 162, 235, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Before Healing\",\n data: hStatus.beforeHeal,\n backgroundColor: \"rgba(153, 102, 255, 0.2)\",\n borderColor: \"rgba(153, 102, 255, 1)\",\n borderWidth: 1,\n },\n ],\n };\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n\n return (\n \n \n \n {!distributedSetup ? (\n } />\n ) : (\n \n \n \n \n {\n setBucketName(e.target.value as string);\n }}\n className={classes.searchField}\n input={ }\n displayEmpty\n >\n \n Select Bucket\n \n {bucketNames.map((option) => (\n \n {option.label}\n \n ))}\n \n \n {\n setPrefix(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n setRecursive(e.target.checked);\n }}\n disabled={false}\n label=\"Recursive\"\n />\n {\n setForceStart(e.target.checked);\n }}\n disabled={false}\n label=\"Force Start\"\n />\n {\n setForceStop(e.target.checked);\n }}\n disabled={false}\n label=\"Force Stop\"\n />\n \n \n setStart(true)}\n label={\"Start\"}\n />\n \n \n \n \n \n \n Size scanned: {hStatus.sizeScanned}\n
\n \n Objects healed: {hStatus.objectsHealed} /{\" \"}\n {hStatus.objectsScanned}\n
\n \n Healing time: {hStatus.healDuration}s\n
\n \n \n \n )}\n \n \n );\n};\n\nexport default Heal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// Close codes for websockets defined in RFC 6455\nexport const WSCloseNormalClosure = 1000;\nexport const WSCloseCloseGoingAway = 1001;\nexport const WSCloseAbnormalClosure = 1006;\nexport const WSClosePolicyViolation = 1008;\nexport const WSCloseInternalServerErr = 1011;\n\nexport const wsProtocol = (protocol: string): string => {\n let wsProtocol = \"ws\";\n if (protocol === \"https:\") {\n wsProtocol = \"wss\";\n }\n return wsProtocol;\n};\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","entity","sx","flexFlow","md","color","colors","link","textDecoration","href","target","rel","fieldBasic","tooltipHelper","checkboxIcons","fieldContainer","justifyContent","margin","flexBasis","flexWrap","noTopMargin","marginTop","label","onChange","value","id","name","checked","disabled","tooltip","overrideLabelClasses","overrideCheckboxStyles","inputProps","checkedIcon","icon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","style","htmlFor","noMinWidthLabel","tooltipContainer","placement","useStyles","makeStyles","graphContainer","padding","scanInfo","flexDirection","scanData","formBox","buttonBar","bucketField","flex","prefixField","searchField","marginLeft","actionsTray","inlineCheckboxes","containerForHeader","spacing","SelectStyled","lineHeight","InputBase","distributedSetup","useSelector","selDistSet","useState","start","setStart","bucketName","setBucketName","bucketList","setBucketList","prefix","setPrefix","recursive","setRecursive","forceStart","setForceStart","forceStop","setForceStop","beforeHeal","afterHeal","objectsHealed","objectsScanned","healDuration","sizeScanned","hStatus","setHStatus","useEffect","api","then","res","buckets","catch","err","console","error","colorHealthArr","Green","Yellow","Red","Grey","cB","cA","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","hostname","onopen","log","send","onmessage","message","m","JSON","parse","data","Object","entries","healthAfterCols","key","itemsScanned","healthBeforeCols","niceBytes","bytesScanned","onclose","close","labels","datasets","borderColor","borderWidth","bucketNames","map","Fragment","scopes","IAM_SCOPES","resource","CONSOLE_UI_RESOURCE","variant","e","input","displayEmpty","option","InputProps","disableUnderline","type","onClick","options","text","legend","position","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2032.4598ddc6.chunk.js b/portal-ui/build/static/js/2032.4598ddc6.chunk.js
new file mode 100644
index 000000000..e6f5db7e7
--- /dev/null
+++ b/portal-ui/build/static/js/2032.4598ddc6.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2032],{16502:function(e,n,t){t(72791);var a=t(11135),i=t(25787),r=t(80184);n.Z=(0,i.Z)((function(e){return(0,a.Z)({headerContainer:{backgroundColor:"#e78794",borderRadius:3,marginBottom:20,padding:1,paddingBottom:15},labelHeadline:{color:"#000000",fontSize:14,marginLeft:20},labelText:{color:"#000000",fontSize:14,marginLeft:20,marginRight:40}})}))((function(e){var n=e.classes,t=e.label,a=e.title;return(0,r.jsxs)("div",{className:n.headerContainer,children:[(0,r.jsx)("h4",{className:n.labelHeadline,children:a}),(0,r.jsx)("div",{className:n.labelText,children:t})]})}))},62032:function(e,n,t){t.r(n);var a=t(29439),i=t(72791),r=t(51691),o=t(61889),l=t(9505),s=t(23508),c=t(87995),d=t(25469),u=t(16502),f=t(21435),h=t(75952),m=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,p=e.selectedItem,b=e.endpoint,x=e.element,g=(0,d.TL)(),Z=(0,l.Z)((function(){return n(!0)}),(function(e){return g((0,c.Ih)(e))})),j=(0,a.Z)(Z,2),v=j[0],y=j[1],C=(0,i.useState)(""),k=(0,a.Z)(C,2),T=k[0],N=k[1];if(!p)return null;return(0,m.jsx)(s.Z,{title:"Delete ".concat(x),confirmText:"Delete",isOpen:t,titleIcon:(0,m.jsx)(h.NvT,{}),isLoading:v,onConfirm:function(){y("DELETE","".concat(b).concat(p))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:T!==p||v},confirmationContent:(0,m.jsxs)(r.Z,{children:[(0,m.jsx)(o.ZP,{item:!0,xs:12,children:(0,m.jsx)(u.Z,{title:"WARNING",label:"Please note that this is a dangerous operation. Once a key has been deleted all data that has been encrypted with it cannot be decrypted anymore, and therefore, is lost."})}),"To continue please type ",(0,m.jsx)("b",{children:p})," in the box.",(0,m.jsx)(o.ZP,{item:!0,xs:12,children:(0,m.jsx)(f.Z,{id:"retype-key",name:"retype-key",onChange:function(e){N(e.target.value)},onPaste:function(e){return e.preventDefault()},label:"",value:T})})]})})}}}]);
+//# sourceMappingURL=2032.4598ddc6.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2032.4598ddc6.chunk.js.map b/portal-ui/build/static/js/2032.4598ddc6.chunk.js.map
new file mode 100644
index 000000000..46f19a21c
--- /dev/null
+++ b/portal-ui/build/static/js/2032.4598ddc6.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2032.4598ddc6.chunk.js","mappings":"2JA0DA,KAAeA,EAAAA,EAAAA,IA/BA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXC,gBAAiB,CACfC,gBAAiB,UACjBC,aAAc,EACdC,aAAc,GACdC,QAAS,EACTC,cAAe,IAEjBC,cAAe,CACbC,MAAO,UACPC,SAAU,GACVC,WAAY,IAEdC,UAAW,CACTH,MAAO,UACPC,SAAU,GACVC,WAAY,GACZE,YAAa,KAEd,GAWL,EATuB,SAAH,GAAoD,IAA9CC,EAAO,EAAPA,QAASC,EAAK,EAALA,MAAOC,EAAK,EAALA,MACxC,OACE,iBAAKC,UAAWH,EAAQZ,gBAAgB,WACtC,eAAIe,UAAWH,EAAQN,cAAc,SAAEQ,KACvC,gBAAKC,UAAWH,EAAQF,UAAU,SAAEG,MAG1C,G,sKC6CA,UAjEuB,SAAH,GAMS,IAL3BG,EAA0B,EAA1BA,2BACAC,EAAU,EAAVA,WACAC,EAAY,EAAZA,aACAC,EAAQ,EAARA,SACAC,EAAO,EAAPA,QAEMC,GAAWC,EAAAA,EAAAA,MAMjB,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASP,GAA2B,EAAM,IACzC,SAACQ,GAAyB,OAC3CH,GAASI,EAAAA,EAAAA,IAAqBD,GAAM,IAGmC,eAAlEE,EAAa,KAAEC,EAAe,KACrC,GAAkCC,EAAAA,EAAAA,UAAS,IAAG,eAAvCC,EAAS,KAAEC,EAAY,KAE9B,IAAKZ,EACH,OAAO,KAOT,OACE,SAAC,IAAa,CACZJ,MAAK,iBAAYM,GACjBW,YAAa,SACbC,OAAQf,EACRgB,WAAW,SAAC,MAAiB,IAC7BC,UAAWR,EACXS,UAXoB,WACtBR,EAAgB,SAAS,GAAD,OAAKR,GAAQ,OAAGD,GAC1C,EAUIkB,QArBY,WAAH,OAASpB,GAA2B,EAAO,EAsBpDqB,mBAAoB,CAClBC,SAAUT,IAAcX,GAAgBQ,GAE1Ca,qBACE,UAAC,IAAiB,YAChB,SAAC,KAAI,CAACC,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAc,CACb3B,MAAO,UACPD,MACE,gLAGC,4BACiB,uBAAIK,IAAiB,gBAC7C,SAAC,KAAI,CAACsB,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAe,CACdC,GAAG,aACHC,KAAK,aACLC,SAAU,SAACC,GACTf,EAAae,EAAMC,OAAOC,MAC5B,EACAC,QAAS,SAACC,GAAC,OAAKA,EAAEC,gBAAgB,EAClCrC,MAAM,GACNkC,MAAOlB,UAOrB,C","sources":["screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/KMS/DeleteKMSModal.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 from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\ninterface IWarningMessage {\n classes: any;\n label: any;\n title: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n backgroundColor: \"#e78794\",\n borderRadius: 3,\n marginBottom: 20,\n padding: 1,\n paddingBottom: 15,\n },\n labelHeadline: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n },\n labelText: {\n color: \"#000000\",\n fontSize: 14,\n marginLeft: 20,\n marginRight: 40,\n },\n });\n\nconst WarningMessage = ({ classes, label, title }: IWarningMessage) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(WarningMessage);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\n\nimport { DialogContentText, Grid } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport WarningMessage from \"../Common/WarningMessage/WarningMessage\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { ConfirmDeleteIcon } from \"mds\";\n\ninterface IDeleteKMSModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedItem: string;\n endpoint: string;\n element: string;\n}\n\nconst DeleteKMSModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedItem,\n endpoint,\n element,\n}: IDeleteKMSModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [retypeKey, setRetypeKey] = useState(\"\");\n\n if (!selectedItem) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `${endpoint}${selectedItem}`);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypeKey !== selectedItem || deleteLoading,\n }}\n confirmationContent={\n \n \n \n \n To continue please type {selectedItem} in the box.\n \n ) => {\n setRetypeKey(event.target.value);\n }}\n onPaste={(e) => e.preventDefault()}\n label=\"\"\n value={retypeKey}\n />\n \n \n }\n />\n );\n};\n\nexport default DeleteKMSModal;\n"],"names":["withStyles","theme","createStyles","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","color","fontSize","marginLeft","labelText","marginRight","classes","label","title","className","closeDeleteModalAndRefresh","deleteOpen","selectedItem","endpoint","element","dispatch","useAppDispatch","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","useState","retypeKey","setRetypeKey","confirmText","isOpen","titleIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","item","xs","id","name","onChange","event","target","value","onPaste","e","preventDefault"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2112.c85537ec.chunk.js b/portal-ui/build/static/js/2112.1820b142.chunk.js
similarity index 90%
rename from portal-ui/build/static/js/2112.c85537ec.chunk.js
rename to portal-ui/build/static/js/2112.1820b142.chunk.js
index 982f48fc2..fb6435eba 100644
--- a/portal-ui/build/static/js/2112.c85537ec.chunk.js
+++ b/portal-ui/build/static/js/2112.1820b142.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2112],{32112:function(e,n,t){t.r(n);var a=t(29439),o=t(72791),r=t(51691),i=t(21435),c=t(61889),s=t(9505),l=t(23508),u=t(56096),p=t(87995),f=t(25469),d=t(80184);n.default=function(e){var n=e.deleteOpen,t=e.selectedPVC,m=e.closeDeleteModalAndRefresh,h=(0,f.TL)(),C=(0,o.useState)(""),x=(0,a.Z)(C,2),v=x[0],P=x[1],Z=(0,s.Z)((function(){return m(!0)}),(function(e){return h((0,p.Ih)(e))})),b=(0,a.Z)(Z,2),j=b[0],T=b[1];return(0,d.jsx)(l.Z,{title:"Delete PVC",confirmText:"Delete",isOpen:n,titleIcon:(0,d.jsx)(u.NvT,{}),isLoading:j,onConfirm:function(){v===t.name?T("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pvc/").concat(t.name)):h((0,p.Ih)({errorMessage:"PVC name is incorrect",detailedError:""}))},onClose:function(){return m(!1)},confirmButtonProps:{disabled:v!==t.name||j},confirmationContent:(0,d.jsxs)(r.Z,{children:["To continue please type ",(0,d.jsx)("b",{children:t.name})," in the box.",(0,d.jsx)(c.ZP,{item:!0,xs:12,children:(0,d.jsx)(i.Z,{id:"retype-PVC",name:"retype-PVC",onChange:function(e){P(e.target.value)},label:"",value:v})})]})})}}}]);
-//# sourceMappingURL=2112.c85537ec.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2112],{32112:function(e,n,t){t.r(n);var a=t(29439),o=t(72791),r=t(51691),i=t(21435),c=t(61889),s=t(9505),l=t(23508),u=t(75952),p=t(87995),f=t(25469),d=t(80184);n.default=function(e){var n=e.deleteOpen,t=e.selectedPVC,m=e.closeDeleteModalAndRefresh,h=(0,f.TL)(),C=(0,o.useState)(""),x=(0,a.Z)(C,2),v=x[0],P=x[1],Z=(0,s.Z)((function(){return m(!0)}),(function(e){return h((0,p.Ih)(e))})),b=(0,a.Z)(Z,2),j=b[0],T=b[1];return(0,d.jsx)(l.Z,{title:"Delete PVC",confirmText:"Delete",isOpen:n,titleIcon:(0,d.jsx)(u.NvT,{}),isLoading:j,onConfirm:function(){v===t.name?T("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pvc/").concat(t.name)):h((0,p.Ih)({errorMessage:"PVC name is incorrect",detailedError:""}))},onClose:function(){return m(!1)},confirmButtonProps:{disabled:v!==t.name||j},confirmationContent:(0,d.jsxs)(r.Z,{children:["To continue please type ",(0,d.jsx)("b",{children:t.name})," in the box.",(0,d.jsx)(c.ZP,{item:!0,xs:12,children:(0,d.jsx)(i.Z,{id:"retype-PVC",name:"retype-PVC",onChange:function(e){P(e.target.value)},label:"",value:v})})]})})}}}]);
+//# sourceMappingURL=2112.1820b142.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2112.1820b142.chunk.js.map b/portal-ui/build/static/js/2112.1820b142.chunk.js.map
new file mode 100644
index 000000000..33ca0d865
--- /dev/null
+++ b/portal-ui/build/static/js/2112.1820b142.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2112.1820b142.chunk.js","mappings":"gPAkGA,UA/DkB,SAAH,GAII,IAHjBA,EAAU,EAAVA,WACAC,EAAW,EAAXA,YACAC,EAA0B,EAA1BA,2BAEMC,GAAWC,EAAAA,EAAAA,MACjB,GAAkCC,EAAAA,EAAAA,UAAS,IAAG,eAAvCC,EAAS,KAAEC,EAAY,KAO9B,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CN,GAASO,EAAAA,EAAAA,IAAqBD,GAAM,IAGmC,eAAlEE,EAAa,KAAEC,EAAe,KAkBrC,OACE,SAAC,IAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQf,EACRgB,WAAW,SAAC,MAAiB,IAC7BC,UAAWN,EACXO,UAvBoB,WAClBZ,IAAcL,EAAYkB,KAS9BP,EACE,SAAS,sBAAD,OACcX,EAAYmB,UAAS,oBAAYnB,EAAYoB,OAAM,gBAAQpB,EAAYkB,OAV7FhB,GACEO,EAAAA,EAAAA,IAAqB,CACnBY,aAAc,wBACdC,cAAe,KASvB,EAUIC,QA5BY,WAAH,OAAStB,GAA2B,EAAO,EA6BpDuB,mBAAoB,CAClBC,SAAUpB,IAAcL,EAAYkB,MAAQR,GAE9CgB,qBACE,UAAC,IAAiB,WAAC,4BACO,uBAAI1B,EAAYkB,OAAS,gBACjD,SAAC,KAAI,CAACS,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAe,CACdC,GAAG,aACHX,KAAK,aACLY,SAAU,SAACC,GACTzB,EAAayB,EAAMC,OAAOC,MAC5B,EACAC,MAAM,GACND,MAAO5B,UAOrB,C","sources":["screens/Console/Tenants/TenantDetails/DeletePVC.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, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { IStoragePVCs } from \"../../Storage/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePVC {\n deleteOpen: boolean;\n selectedPVC: IStoragePVCs;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePVC = ({\n deleteOpen,\n selectedPVC,\n closeDeleteModalAndRefresh,\n}: IDeletePVC) => {\n const dispatch = useAppDispatch();\n const [retypePVC, setRetypePVC] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePVC !== selectedPVC.name) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"PVC name is incorrect\",\n detailedError: \"\",\n })\n );\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPVC.namespace}/tenants/${selectedPVC.tenant}/pvc/${selectedPVC.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePVC !== selectedPVC.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPVC.name} in the box.\n \n ) => {\n setRetypePVC(event.target.value);\n }}\n label=\"\"\n value={retypePVC}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePVC;\n"],"names":["deleteOpen","selectedPVC","closeDeleteModalAndRefresh","dispatch","useAppDispatch","useState","retypePVC","setRetypePVC","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","name","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","item","xs","id","onChange","event","target","value","label"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2112.c85537ec.chunk.js.map b/portal-ui/build/static/js/2112.c85537ec.chunk.js.map
deleted file mode 100644
index db229c53f..000000000
--- a/portal-ui/build/static/js/2112.c85537ec.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2112.c85537ec.chunk.js","mappings":"gPAkGA,UA/DkB,SAAH,GAII,IAHjBA,EAAU,EAAVA,WACAC,EAAW,EAAXA,YACAC,EAA0B,EAA1BA,2BAEMC,GAAWC,EAAAA,EAAAA,MACjB,GAAkCC,EAAAA,EAAAA,UAAS,IAAG,eAAvCC,EAAS,KAAEC,EAAY,KAO9B,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CN,GAASO,EAAAA,EAAAA,IAAqBD,GAAM,IAGmC,eAAlEE,EAAa,KAAEC,EAAe,KAkBrC,OACE,SAAC,IAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQf,EACRgB,WAAW,SAAC,MAAiB,IAC7BC,UAAWN,EACXO,UAvBoB,WAClBZ,IAAcL,EAAYkB,KAS9BP,EACE,SAAS,sBAAD,OACcX,EAAYmB,UAAS,oBAAYnB,EAAYoB,OAAM,gBAAQpB,EAAYkB,OAV7FhB,GACEO,EAAAA,EAAAA,IAAqB,CACnBY,aAAc,wBACdC,cAAe,KASvB,EAUIC,QA5BY,WAAH,OAAStB,GAA2B,EAAO,EA6BpDuB,mBAAoB,CAClBC,SAAUpB,IAAcL,EAAYkB,MAAQR,GAE9CgB,qBACE,UAAC,IAAiB,WAAC,4BACO,uBAAI1B,EAAYkB,OAAS,gBACjD,SAAC,KAAI,CAACS,MAAI,EAACC,GAAI,GAAG,UAChB,SAAC,IAAe,CACdC,GAAG,aACHX,KAAK,aACLY,SAAU,SAACC,GACTzB,EAAayB,EAAMC,OAAOC,MAC5B,EACAC,MAAM,GACND,MAAO5B,UAOrB,C","sources":["screens/Console/Tenants/TenantDetails/DeletePVC.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, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\nimport { IStoragePVCs } from \"../../Storage/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeletePVC {\n deleteOpen: boolean;\n selectedPVC: IStoragePVCs;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n}\n\nconst DeletePVC = ({\n deleteOpen,\n selectedPVC,\n closeDeleteModalAndRefresh,\n}: IDeletePVC) => {\n const dispatch = useAppDispatch();\n const [retypePVC, setRetypePVC] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePVC !== selectedPVC.name) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"PVC name is incorrect\",\n detailedError: \"\",\n })\n );\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPVC.namespace}/tenants/${selectedPVC.tenant}/pvc/${selectedPVC.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePVC !== selectedPVC.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPVC.name} in the box.\n \n ) => {\n setRetypePVC(event.target.value);\n }}\n label=\"\"\n value={retypePVC}\n />\n \n \n }\n />\n );\n};\n\nexport default DeletePVC;\n"],"names":["deleteOpen","selectedPVC","closeDeleteModalAndRefresh","dispatch","useAppDispatch","useState","retypePVC","setRetypePVC","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","name","namespace","tenant","errorMessage","detailedError","onClose","confirmButtonProps","disabled","confirmationContent","item","xs","id","onChange","event","target","value","label"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2180.26a5c38b.chunk.js b/portal-ui/build/static/js/2180.26a5c38b.chunk.js
deleted file mode 100644
index 724e063bd..000000000
--- a/portal-ui/build/static/js/2180.26a5c38b.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2180],{47494:function(e,t,n){"use strict";n.r(t);var o=n(29439),c=n(1413),r=n(72791),i=n(78687),a=n(57689),s=n(75952),l=n(35527),u=n(11135),d=n(92983),f=n(81207),p=n(47919),m=n(61889),v=n(23814),h=n(56087),Z=n(60680),x=n(38442),b=n(75578),k=n(87995),C=n(72455),S=n(9859),_=n(25469),j=n(27454),z=n(80184),g=(0,b.Z)(r.lazy((function(){return n.e(4619).then(n.bind(n,94619))}))),E=(0,b.Z)(r.lazy((function(){return n.e(8990).then(n.bind(n,8990))}))),F=(0,b.Z)(r.lazy((function(){return n.e(8455).then(n.bind(n,58455))}))),P=(0,C.Z)((function(e){return(0,u.Z)((0,c.Z)((0,c.Z)((0,c.Z)((0,c.Z)((0,c.Z)({"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}}},v.VX),v.OR),v.qg),v.cx),(0,v.Bz)(e.spacing(4))))}));t.default=function(){var e=(0,_.TL)(),t=P(),n=(0,a.UO)(),c=(0,i.v9)(S.HQ),u=(0,r.useState)(!0),v=(0,o.Z)(u,2),b=v[0],C=v[1],y=(0,r.useState)([]),T=(0,o.Z)(y,2),I=T[0],O=T[1],A=(0,r.useState)(!1),B=(0,o.Z)(A,2),w=B[0],L=B[1],U=(0,r.useState)(!1),N=(0,o.Z)(U,2),H=N[0],R=N[1],V=(0,r.useState)(""),K=(0,o.Z)(V,2),M=K[0],Y=K[1],D=(0,r.useState)(!1),G=(0,o.Z)(D,2),q=G[0],Q=G[1],X=(0,r.useState)(""),J=(0,o.Z)(X,2),W=J[0],$=J[1],ee=(0,r.useState)(""),te=(0,o.Z)(ee,2),ne=te[0],oe=te[1],ce=n.bucketName||"",re=(0,x.F)(ce,[h.Ft.S3_GET_BUCKET_POLICY]),ie=(0,x.F)(ce,[h.Ft.S3_DELETE_BUCKET_POLICY]),ae=(0,x.F)(ce,[h.Ft.S3_PUT_BUCKET_POLICY,h.Ft.S3_PUT_ACTIONS]);(0,r.useEffect)((function(){c&&C(!0)}),[c,C]);var se=[{type:"delete",disableButtonFunction:function(){return!ie},onClick:function(e){R(!0),Y(e.prefix)}},{type:"view",disableButtonFunction:function(){return!ae},onClick:function(e){$(e.prefix),oe(e.access),Q(!0)}}];(0,r.useEffect)((function(){b&&(re?f.Z.invoke("GET","/api/v1/bucket/".concat(ce,"/access-rules")).then((function(e){O(e.accessRules),C(!1)})).catch((function(t){e((0,k.Ih)(t)),C(!1)})):C(!1))}),[b,e,re,ce]);return(0,z.jsxs)(r.Fragment,{children:[w&&(0,z.jsx)(g,{modalOpen:w,onClose:function(){L(!1),C(!0)},bucket:ce}),H&&(0,z.jsx)(E,{modalOpen:H,onClose:function(){R(!1),C(!0)},bucket:ce,toDelete:M}),q&&(0,z.jsx)(F,{modalOpen:q,onClose:function(){Q(!1),C(!0)},bucket:ce,toEdit:W,initial:ne}),(0,z.jsxs)(m.ZP,{item:!0,xs:12,className:t.actionsTray,children:[(0,z.jsx)(Z.Z,{children:"Anonymous Access"}),(0,z.jsx)(x.s,{scopes:[h.Ft.S3_GET_BUCKET_POLICY,h.Ft.S3_PUT_BUCKET_POLICY,h.Ft.S3_PUT_ACTIONS],resource:ce,matchAll:!0,errorProps:{disabled:!0},children:(0,z.jsx)(j.Z,{tooltip:"Add Access Rule",children:(0,z.jsx)(s.zx,{id:"add-bucket-access-rule",onClick:function(){L(!0)},label:"Add Access Rule",icon:(0,z.jsx)(p.Z,{}),variant:"callAction"})})})]}),(0,z.jsx)(l.Z,{className:t.tableBlock,children:(0,z.jsx)(x.s,{scopes:[h.Ft.S3_GET_BUCKET_POLICY],resource:ce,errorProps:{disabled:!0},children:(0,z.jsx)(d.Z,{noBackground:!0,itemActions:se,columns:[{label:"Prefix",elementKey:"prefix"},{label:"Access",elementKey:"access"}],isLoading:b,records:I,entityName:"Access Rules",idField:"prefix"})})})]})}},60680:function(e,t,n){"use strict";n(72791);var o=n(11135),c=n(25787),r=n(80184);t.Z=(0,c.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,n=e.children;return(0,r.jsx)("h1",{className:t.root,children:n})}))},26759:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");t.Z=i},70366:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");t.Z=i},97911:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");t.Z=i},94454:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var o=n(4942),c=n(63366),r=n(87462),i=n(72791),a=n(28182),s=n(94419),l=n(12065),u=n(97278),d=n(76189),f=n(80184),p=(0,d.Z)((0,f.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),m=(0,d.Z)((0,f.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),v=(0,d.Z)((0,f.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),h=n(14036),Z=n(31402),x=n(66934),b=n(75878),k=n(21217);function C(e){return(0,k.Z)("MuiCheckbox",e)}var S=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),_=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],j=(0,x.ZP)(u.Z,{shouldForwardProp:function(e){return(0,x.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.indeterminate&&t.indeterminate,"default"!==n.color&&t["color".concat((0,h.Z)(n.color))]]}})((function(e){var t,n=e.theme,c=e.ownerState;return(0,r.Z)({color:(n.vars||n).palette.text.secondary},!c.disableRipple&&{"&:hover":{backgroundColor:n.vars?"rgba(".concat("default"===c.color?n.vars.palette.action.activeChannel:n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===c.color?n.palette.action.active:n.palette[c.color].main,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==c.color&&(t={},(0,o.Z)(t,"&.".concat(S.checked,", &.").concat(S.indeterminate),{color:(n.vars||n).palette[c.color].main}),(0,o.Z)(t,"&.".concat(S.disabled),{color:(n.vars||n).palette.action.disabled}),t))})),z=(0,f.jsx)(m,{}),g=(0,f.jsx)(p,{}),E=(0,f.jsx)(v,{}),F=i.forwardRef((function(e,t){var n,o,l=(0,Z.Z)({props:e,name:"MuiCheckbox"}),u=l.checkedIcon,d=void 0===u?z:u,p=l.color,m=void 0===p?"primary":p,v=l.icon,x=void 0===v?g:v,b=l.indeterminate,k=void 0!==b&&b,S=l.indeterminateIcon,F=void 0===S?E:S,P=l.inputProps,y=l.size,T=void 0===y?"medium":y,I=l.className,O=(0,c.Z)(l,_),A=k?F:x,B=k?F:d,w=(0,r.Z)({},l,{color:m,indeterminate:k,size:T}),L=function(e){var t=e.classes,n=e.indeterminate,o=e.color,c={root:["root",n&&"indeterminate","color".concat((0,h.Z)(o))]},i=(0,s.Z)(c,C,t);return(0,r.Z)({},t,i)}(w);return(0,f.jsx)(j,(0,r.Z)({type:"checkbox",inputProps:(0,r.Z)({"data-indeterminate":k},P),icon:i.cloneElement(A,{fontSize:null!=(n=A.props.fontSize)?n:T}),checkedIcon:i.cloneElement(B,{fontSize:null!=(o=B.props.fontSize)?o:T}),ownerState:w,ref:t,className:(0,a.Z)(L.root,I)},O,{classes:L}))}))},26769:function(e,t,n){var o=n(39066),c=n(93629),r=n(43141);e.exports=function(e){return"string"==typeof e||!c(e)&&r(e)&&"[object String]"==o(e)}}}]);
-//# sourceMappingURL=2180.26a5c38b.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2180.26a5c38b.chunk.js.map b/portal-ui/build/static/js/2180.26a5c38b.chunk.js.map
deleted file mode 100644
index 10021880e..000000000
--- a/portal-ui/build/static/js/2180.26a5c38b.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2180.26a5c38b.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessRulePanel.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/lodash/isString.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, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport { Paper } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../../common/api\";\n\nimport AddIcon from \"../../../../icons/AddIcon\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport PanelTitle from \"../../Common/PanelTitle/PanelTitle\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst AddAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./AddAccessRule\"))\n);\nconst DeleteAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./DeleteAccessRule\"))\n);\nconst EditAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./EditAccessRule\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n ...objectBrowserCommon,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst AccessRule = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [loadingAccessRules, setLoadingAccessRules] = useState(true);\n const [accessRules, setAccessRules] = useState([]);\n const [addAccessRuleOpen, setAddAccessRuleOpen] = useState(false);\n const [deleteAccessRuleOpen, setDeleteAccessRuleOpen] =\n useState(false);\n const [accessRuleToDelete, setAccessRuleToDelete] = useState(\"\");\n const [editAccessRuleOpen, setEditAccessRuleOpen] = useState(false);\n const [accessRuleToEdit, setAccessRuleToEdit] = useState(\"\");\n const [initialAccess, setInitialAccess] = useState(\"\");\n\n const bucketName = params.bucketName || \"\";\n\n const displayAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n ]);\n\n const deleteAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n ]);\n\n const editAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingAccessRules(true);\n }\n }, [loadingBucket, setLoadingAccessRules]);\n\n const AccessRuleActions = [\n {\n type: \"delete\",\n disableButtonFunction: () => !deleteAccessRules,\n onClick: (accessRule: any) => {\n setDeleteAccessRuleOpen(true);\n setAccessRuleToDelete(accessRule.prefix);\n },\n },\n {\n type: \"view\",\n disableButtonFunction: () => !editAccessRules,\n onClick: (accessRule: any) => {\n setAccessRuleToEdit(accessRule.prefix);\n setInitialAccess(accessRule.access);\n setEditAccessRuleOpen(true);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingAccessRules) {\n if (displayAccessRules) {\n api\n .invoke(\"GET\", `/api/v1/bucket/${bucketName}/access-rules`)\n .then((res: any) => {\n setAccessRules(res.accessRules);\n setLoadingAccessRules(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingAccessRules(false);\n });\n } else {\n setLoadingAccessRules(false);\n }\n }\n }, [loadingAccessRules, dispatch, displayAccessRules, bucketName]);\n\n const closeAddAccessRuleModal = () => {\n setAddAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n const closeDeleteAccessRuleModal = () => {\n setDeleteAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n const closeEditAccessRuleModal = () => {\n setEditAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n return (\n \n {addAccessRuleOpen && (\n \n )}\n {deleteAccessRuleOpen && (\n \n )}\n {editAccessRuleOpen && (\n \n )}\n \n Anonymous Access \n \n \n {\n setAddAccessRuleOpen(true);\n }}\n label={\"Add Access Rule\"}\n icon={ }\n variant={\"callAction\"}\n />\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n },\n });\n\ninterface IPanelTitle extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst PanelTitle = ({ classes, children }: IPanelTitle) => {\n return {children} ;\n};\n\nexport default withStyles(styles)(PanelTitle);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["AddAccessRuleModal","withSuspense","React","DeleteAccessRuleModal","EditAccessRuleModal","useStyles","makeStyles","theme","createStyles","backgroundImage","tableStyles","actionsTray","searchField","objectBrowserCommon","containerForHeader","spacing","dispatch","useAppDispatch","classes","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","useState","loadingAccessRules","setLoadingAccessRules","accessRules","setAccessRules","addAccessRuleOpen","setAddAccessRuleOpen","deleteAccessRuleOpen","setDeleteAccessRuleOpen","accessRuleToDelete","setAccessRuleToDelete","editAccessRuleOpen","setEditAccessRuleOpen","accessRuleToEdit","setAccessRuleToEdit","initialAccess","setInitialAccess","bucketName","displayAccessRules","hasPermission","IAM_SCOPES","deleteAccessRules","editAccessRules","useEffect","AccessRuleActions","type","disableButtonFunction","onClick","accessRule","prefix","access","api","then","res","catch","err","setErrorSnackMessage","Fragment","modalOpen","onClose","bucket","toDelete","toEdit","initial","item","xs","className","scopes","resource","matchAll","errorProps","disabled","tooltip","id","label","icon","variant","tableBlock","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","withStyles","root","padding","margin","fontSize","children","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","name","overridesResolver","props","styles","ownerState","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","backgroundColor","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","clsx","baseGetTag","isArray","isObjectLike","module","value"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2180.dc0f648b.chunk.js b/portal-ui/build/static/js/2180.dc0f648b.chunk.js
new file mode 100644
index 000000000..1406b63a1
--- /dev/null
+++ b/portal-ui/build/static/js/2180.dc0f648b.chunk.js
@@ -0,0 +1,2 @@
+(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2180],{47494:function(e,t,n){"use strict";n.r(t);var o=n(29439),c=n(1413),r=n(72791),i=n(78687),a=n(57689),s=n(75952),l=n(35527),u=n(11135),d=n(92983),f=n(81207),p=n(61889),m=n(23814),v=n(56087),h=n(60680),Z=n(38442),x=n(75578),b=n(87995),C=n(72455),k=n(9859),S=n(25469),_=n(27454),j=n(80184),T=(0,x.Z)(r.lazy((function(){return n.e(4619).then(n.bind(n,94619))}))),z=(0,x.Z)(r.lazy((function(){return n.e(8990).then(n.bind(n,8990))}))),E=(0,x.Z)(r.lazy((function(){return n.e(8455).then(n.bind(n,58455))}))),F=(0,C.Z)((function(e){return(0,u.Z)((0,c.Z)((0,c.Z)((0,c.Z)((0,c.Z)((0,c.Z)({"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}}},m.VX),m.OR),m.qg),m.cx),(0,m.Bz)(e.spacing(4))))}));t.default=function(){var e=(0,S.TL)(),t=F(),n=(0,a.UO)(),c=(0,i.v9)(k.HQ),u=(0,r.useState)(!0),m=(0,o.Z)(u,2),x=m[0],C=m[1],g=(0,r.useState)([]),P=(0,o.Z)(g,2),I=P[0],O=P[1],y=(0,r.useState)(!1),A=(0,o.Z)(y,2),B=A[0],w=A[1],L=(0,r.useState)(!1),N=(0,o.Z)(L,2),U=N[0],H=N[1],R=(0,r.useState)(""),V=(0,o.Z)(R,2),K=V[0],M=V[1],G=(0,r.useState)(!1),Y=(0,o.Z)(G,2),D=Y[0],q=Y[1],Q=(0,r.useState)(""),X=(0,o.Z)(Q,2),J=X[0],W=X[1],$=(0,r.useState)(""),ee=(0,o.Z)($,2),te=ee[0],ne=ee[1],oe=n.bucketName||"",ce=(0,Z.F)(oe,[v.Ft.S3_GET_BUCKET_POLICY,v.Ft.S3_GET_ACTIONS]),re=(0,Z.F)(oe,[v.Ft.S3_DELETE_BUCKET_POLICY]),ie=(0,Z.F)(oe,[v.Ft.S3_PUT_BUCKET_POLICY,v.Ft.S3_PUT_ACTIONS]);(0,r.useEffect)((function(){c&&C(!0)}),[c,C]);var ae=[{type:"delete",disableButtonFunction:function(){return!re},onClick:function(e){H(!0),M(e.prefix)}},{type:"view",disableButtonFunction:function(){return!ie},onClick:function(e){W(e.prefix),ne(e.access),q(!0)}}];(0,r.useEffect)((function(){x&&(ce?f.Z.invoke("GET","/api/v1/bucket/".concat(oe,"/access-rules")).then((function(e){O(e.accessRules),C(!1)})).catch((function(t){e((0,b.Ih)(t)),C(!1)})):C(!1))}),[x,e,ce,oe]);return(0,j.jsxs)(r.Fragment,{children:[B&&(0,j.jsx)(T,{modalOpen:B,onClose:function(){w(!1),C(!0)},bucket:oe}),U&&(0,j.jsx)(z,{modalOpen:U,onClose:function(){H(!1),C(!0)},bucket:oe,toDelete:K}),D&&(0,j.jsx)(E,{modalOpen:D,onClose:function(){q(!1),C(!0)},bucket:oe,toEdit:J,initial:te}),(0,j.jsxs)(p.ZP,{item:!0,xs:12,className:t.actionsTray,children:[(0,j.jsx)(h.Z,{children:"Anonymous Access"}),(0,j.jsx)(Z.s,{scopes:[v.Ft.S3_GET_BUCKET_POLICY,v.Ft.S3_PUT_BUCKET_POLICY,v.Ft.S3_GET_ACTIONS,v.Ft.S3_PUT_ACTIONS],resource:oe,matchAll:!0,errorProps:{disabled:!0},children:(0,j.jsx)(_.Z,{tooltip:"Add Access Rule",children:(0,j.jsx)(s.zxk,{id:"add-bucket-access-rule",onClick:function(){w(!0)},label:"Add Access Rule",icon:(0,j.jsx)(s.dtP,{}),variant:"callAction"})})})]}),(0,j.jsx)(l.Z,{className:t.tableBlock,children:(0,j.jsx)(Z.s,{scopes:[v.Ft.S3_GET_BUCKET_POLICY,v.Ft.S3_GET_ACTIONS],resource:oe,errorProps:{disabled:!0},children:(0,j.jsx)(d.Z,{noBackground:!0,itemActions:ae,columns:[{label:"Prefix",elementKey:"prefix"},{label:"Access",elementKey:"access"}],isLoading:x,records:I,entityName:"Access Rules",idField:"prefix"})})})]})}},60680:function(e,t,n){"use strict";n(72791);var o=n(11135),c=n(25787),r=n(80184);t.Z=(0,c.Z)((function(e){return(0,o.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,n=e.children;return(0,r.jsx)("h1",{className:t.root,children:n})}))},26759:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");t.Z=i},70366:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");t.Z=i},97911:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var c=o(n(45649)),r=n(80184),i=(0,c.default)((0,r.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");t.Z=i},94454:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var o=n(4942),c=n(63366),r=n(87462),i=n(72791),a=n(28182),s=n(94419),l=n(12065),u=n(97278),d=n(76189),f=n(80184),p=(0,d.Z)((0,f.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),m=(0,d.Z)((0,f.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),v=(0,d.Z)((0,f.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),h=n(14036),Z=n(31402),x=n(66934),b=n(75878),C=n(21217);function k(e){return(0,C.Z)("MuiCheckbox",e)}var S=(0,b.Z)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),_=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],j=(0,x.ZP)(u.Z,{shouldForwardProp:function(e){return(0,x.FO)(e)||"classes"===e},name:"MuiCheckbox",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.indeterminate&&t.indeterminate,"default"!==n.color&&t["color".concat((0,h.Z)(n.color))]]}})((function(e){var t,n=e.theme,c=e.ownerState;return(0,r.Z)({color:(n.vars||n).palette.text.secondary},!c.disableRipple&&{"&:hover":{backgroundColor:n.vars?"rgba(".concat("default"===c.color?n.vars.palette.action.activeChannel:n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):(0,l.Fq)("default"===c.color?n.palette.action.active:n.palette[c.color].main,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==c.color&&(t={},(0,o.Z)(t,"&.".concat(S.checked,", &.").concat(S.indeterminate),{color:(n.vars||n).palette[c.color].main}),(0,o.Z)(t,"&.".concat(S.disabled),{color:(n.vars||n).palette.action.disabled}),t))})),T=(0,f.jsx)(m,{}),z=(0,f.jsx)(p,{}),E=(0,f.jsx)(v,{}),F=i.forwardRef((function(e,t){var n,o,l=(0,Z.Z)({props:e,name:"MuiCheckbox"}),u=l.checkedIcon,d=void 0===u?T:u,p=l.color,m=void 0===p?"primary":p,v=l.icon,x=void 0===v?z:v,b=l.indeterminate,C=void 0!==b&&b,S=l.indeterminateIcon,F=void 0===S?E:S,g=l.inputProps,P=l.size,I=void 0===P?"medium":P,O=l.className,y=(0,c.Z)(l,_),A=C?F:x,B=C?F:d,w=(0,r.Z)({},l,{color:m,indeterminate:C,size:I}),L=function(e){var t=e.classes,n=e.indeterminate,o=e.color,c={root:["root",n&&"indeterminate","color".concat((0,h.Z)(o))]},i=(0,s.Z)(c,k,t);return(0,r.Z)({},t,i)}(w);return(0,f.jsx)(j,(0,r.Z)({type:"checkbox",inputProps:(0,r.Z)({"data-indeterminate":C},g),icon:i.cloneElement(A,{fontSize:null!=(n=A.props.fontSize)?n:I}),checkedIcon:i.cloneElement(B,{fontSize:null!=(o=B.props.fontSize)?o:I}),ownerState:w,ref:t,className:(0,a.Z)(L.root,O)},y,{classes:L}))}))},26769:function(e,t,n){var o=n(39066),c=n(93629),r=n(43141);e.exports=function(e){return"string"==typeof e||!c(e)&&r(e)&&"[object String]"==o(e)}}}]);
+//# sourceMappingURL=2180.dc0f648b.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2180.dc0f648b.chunk.js.map b/portal-ui/build/static/js/2180.dc0f648b.chunk.js.map
new file mode 100644
index 000000000..3d82aef93
--- /dev/null
+++ b/portal-ui/build/static/js/2180.dc0f648b.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2180.dc0f648b.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessRulePanel.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","../node_modules/@mui/icons-material/ArrowDropDown.js","../node_modules/@mui/icons-material/ArrowDropUp.js","../node_modules/@mui/icons-material/ViewColumn.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/lodash/isString.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, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button } from \"mds\";\nimport { Paper } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport api from \"../../../../common/api\";\n\nimport { AddIcon } from \"mds\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n searchField,\n tableStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport PanelTitle from \"../../Common/PanelTitle/PanelTitle\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst AddAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./AddAccessRule\"))\n);\nconst DeleteAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./DeleteAccessRule\"))\n);\nconst EditAccessRuleModal = withSuspense(\n React.lazy(() => import(\"./EditAccessRule\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n ...objectBrowserCommon,\n ...containerForHeader(theme.spacing(4)),\n })\n);\n\nconst AccessRule = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [loadingAccessRules, setLoadingAccessRules] = useState(true);\n const [accessRules, setAccessRules] = useState([]);\n const [addAccessRuleOpen, setAddAccessRuleOpen] = useState(false);\n const [deleteAccessRuleOpen, setDeleteAccessRuleOpen] =\n useState(false);\n const [accessRuleToDelete, setAccessRuleToDelete] = useState(\"\");\n const [editAccessRuleOpen, setEditAccessRuleOpen] = useState(false);\n const [accessRuleToEdit, setAccessRuleToEdit] = useState(\"\");\n const [initialAccess, setInitialAccess] = useState(\"\");\n\n const bucketName = params.bucketName || \"\";\n\n const displayAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const deleteAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n ]);\n\n const editAccessRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingAccessRules(true);\n }\n }, [loadingBucket, setLoadingAccessRules]);\n\n const AccessRuleActions = [\n {\n type: \"delete\",\n disableButtonFunction: () => !deleteAccessRules,\n onClick: (accessRule: any) => {\n setDeleteAccessRuleOpen(true);\n setAccessRuleToDelete(accessRule.prefix);\n },\n },\n {\n type: \"view\",\n disableButtonFunction: () => !editAccessRules,\n onClick: (accessRule: any) => {\n setAccessRuleToEdit(accessRule.prefix);\n setInitialAccess(accessRule.access);\n setEditAccessRuleOpen(true);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingAccessRules) {\n if (displayAccessRules) {\n api\n .invoke(\"GET\", `/api/v1/bucket/${bucketName}/access-rules`)\n .then((res: any) => {\n setAccessRules(res.accessRules);\n setLoadingAccessRules(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingAccessRules(false);\n });\n } else {\n setLoadingAccessRules(false);\n }\n }\n }, [loadingAccessRules, dispatch, displayAccessRules, bucketName]);\n\n const closeAddAccessRuleModal = () => {\n setAddAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n const closeDeleteAccessRuleModal = () => {\n setDeleteAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n const closeEditAccessRuleModal = () => {\n setEditAccessRuleOpen(false);\n setLoadingAccessRules(true);\n };\n\n return (\n \n {addAccessRuleOpen && (\n \n )}\n {deleteAccessRuleOpen && (\n \n )}\n {editAccessRuleOpen && (\n \n )}\n \n Anonymous Access \n \n \n {\n setAddAccessRuleOpen(true);\n }}\n label={\"Add Access Rule\"}\n icon={ }\n variant={\"callAction\"}\n />\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IconButtonProps } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n },\n });\n\ninterface IPanelTitle extends IconButtonProps {\n classes: any;\n children: any;\n}\n\nconst PanelTitle = ({ classes, children }: IPanelTitle) => {\n return {children} ;\n};\n\nexport default withStyles(styles)(PanelTitle);\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: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\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: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\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: \"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z\"\n}), 'ViewColumn');\nexports.default = _default;","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: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","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: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","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: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);\nexport default checkboxClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"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 CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, ownerState.color !== 'default' && 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.primary.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 [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.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 * 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 */\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 * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default \n */\n indeterminateIcon: PropTypes.node,\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 checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox 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 Checkbox;","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n"],"names":["AddAccessRuleModal","withSuspense","React","DeleteAccessRuleModal","EditAccessRuleModal","useStyles","makeStyles","theme","createStyles","backgroundImage","tableStyles","actionsTray","searchField","objectBrowserCommon","containerForHeader","spacing","dispatch","useAppDispatch","classes","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","useState","loadingAccessRules","setLoadingAccessRules","accessRules","setAccessRules","addAccessRuleOpen","setAddAccessRuleOpen","deleteAccessRuleOpen","setDeleteAccessRuleOpen","accessRuleToDelete","setAccessRuleToDelete","editAccessRuleOpen","setEditAccessRuleOpen","accessRuleToEdit","setAccessRuleToEdit","initialAccess","setInitialAccess","bucketName","displayAccessRules","hasPermission","IAM_SCOPES","deleteAccessRules","editAccessRules","useEffect","AccessRuleActions","type","disableButtonFunction","onClick","accessRule","prefix","access","api","then","res","catch","err","setErrorSnackMessage","Fragment","modalOpen","onClose","bucket","toDelete","toEdit","initial","item","xs","className","scopes","resource","matchAll","errorProps","disabled","tooltip","id","label","icon","variant","tableBlock","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","withStyles","root","padding","margin","fontSize","children","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","createSvgIcon","_jsx","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","name","overridesResolver","props","styles","ownerState","indeterminate","color","capitalize","_extends","vars","palette","text","secondary","disableRipple","backgroundColor","action","activeChannel","primary","mainChannel","hoverOpacity","alpha","active","main","checkboxClasses","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","useThemeProps","checkedIcon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","size","other","_objectWithoutPropertiesLoose","slots","composedClasses","composeClasses","useUtilityClasses","clsx","baseGetTag","isArray","isObjectLike","module","value"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2185.9f8ebee0.chunk.js b/portal-ui/build/static/js/2185.9f8ebee0.chunk.js
new file mode 100644
index 000000000..148a49b56
--- /dev/null
+++ b/portal-ui/build/static/js/2185.9f8ebee0.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2185],{62185:function(e,t,n){n.r(t);var r=n(29439),a=n(1413),o=n(72791),i=n(57689),l=n(75952),s=n(56028),c=n(61889),u=n(21435),d=n(11135),f=n(23814),h=n(78687),m=n(45248),x=n(25469),p=n(87995),j=n(72455),v=n(80184),b=(0,j.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({},f.ID),f.DF))})),w=(0,h.$j)((function(e){return{simplePath:e.objectBrowser.simplePath}}));t.default=w((function(e){var t=e.modalOpen,n=(e.folderName,e.bucketName),a=e.onClose,d=e.simplePath,f=(0,x.TL)(),j=(0,i.s0)(),w=b(),Z=(0,o.useState)(""),P=(0,r.Z)(Z,2),C=P[0],g=P[1],k=(0,o.useState)(!1),F=(0,r.Z)(k,2),N=F[0],y=F[1],E=(0,o.useState)(n),S=(0,r.Z)(E,2),z=S[0],B=S[1],I=(0,h.v9)((function(e){return e.objectBrowser.records}));(0,o.useEffect)((function(){if(d){var e="".concat(n).concat(n.endsWith("/")||d.startsWith("/")?"":"/").concat(d);B(e)}}),[d,n]);var L=function(){var e="/";d&&(e=d.endsWith("/")?d:"".concat(d,"/"));if(-1===I.findIndex((function(t){return t.name===e+C}))){var t=C.split("/").filter((function(e){return""!==e.trim()})).join("/"),r="/browser/".concat(n,"/").concat((0,m.LL)("".concat(e).concat(t,"/")));j(r),a()}else f((0,p.zb)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}))};(0,o.useEffect)((function(){var e=!0;0===C.trim().length&&(e=!1),y(e)}),[C]);return(0,v.jsx)(o.Fragment,{children:(0,v.jsx)(s.Z,{modalOpen:t,title:"Choose or create a new path",onClose:a,titleIcon:(0,v.jsx)(l.Z9m,{}),children:(0,v.jsxs)(c.ZP,{container:!0,children:[(0,v.jsxs)(c.ZP,{item:!0,xs:12,className:w.formFieldRow,children:[(0,v.jsx)("strong",{children:"Current Path:"})," ",(0,v.jsx)("br",{}),(0,v.jsx)("div",{style:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:z})]}),(0,v.jsx)(c.ZP,{item:!0,xs:12,className:w.formFieldRow,children:(0,v.jsx)(u.Z,{value:C,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:function(e){g(e.target.value)},onKeyPress:function(e){"Enter"===e.code&&""!==C&&L()},required:!0})}),(0,v.jsxs)(c.ZP,{item:!0,xs:12,className:w.modalButtonBar,children:[(0,v.jsx)(l.zxk,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:function(){g("")},label:"Clear"}),(0,v.jsx)(l.zxk,{id:"create",type:"submit",variant:"callAction",disabled:!N,onClick:L,label:"Create"})]})]})})})}))}}]);
+//# sourceMappingURL=2185.9f8ebee0.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2185.9f8ebee0.chunk.js.map b/portal-ui/build/static/js/2185.9f8ebee0.chunk.js.map
new file mode 100644
index 000000000..12b129160
--- /dev/null
+++ b/portal-ui/build/static/js/2185.9f8ebee0.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2185.9f8ebee0.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreatePathModal.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 { useNavigate } from \"react-router-dom\";\nimport { Button } from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { connect, useSelector } from \"react-redux\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { BucketObjectItem } from \"./types\";\nimport { CreateNewPathIcon } from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface ICreatePath {\n modalOpen: boolean;\n bucketName: string;\n folderName: string;\n onClose: () => any;\n simplePath: string | null;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n })\n);\n\nconst CreatePathModal = ({\n modalOpen,\n folderName,\n bucketName,\n onClose,\n simplePath,\n}: ICreatePath) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const [pathUrl, setPathUrl] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [currentPath, setCurrentPath] = useState(bucketName);\n\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n useEffect(() => {\n if (simplePath) {\n const newPath = `${bucketName}${\n !bucketName.endsWith(\"/\") && !simplePath.startsWith(\"/\") ? \"/\" : \"\"\n }${simplePath}`;\n\n setCurrentPath(newPath);\n }\n }, [simplePath, bucketName]);\n\n const resetForm = () => {\n setPathUrl(\"\");\n };\n\n const createProcess = () => {\n let folderPath = \"/\";\n\n if (simplePath) {\n folderPath = simplePath.endsWith(\"/\") ? simplePath : `${simplePath}/`;\n }\n\n const sharesName = (record: BucketObjectItem) =>\n record.name === folderPath + pathUrl;\n\n if (records.findIndex(sharesName) !== -1) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Folder cannot have the same name as an existing file\",\n detailedError: \"\",\n })\n );\n return;\n }\n\n const cleanPathURL = pathUrl\n .split(\"/\")\n .filter((splitItem) => splitItem.trim() !== \"\")\n .join(\"/\");\n\n const newPath = `/browser/${bucketName}/${encodeURLString(\n `${folderPath}${cleanPathURL}/`\n )}`;\n navigate(newPath);\n onClose();\n };\n\n useEffect(() => {\n let valid = true;\n if (pathUrl.trim().length === 0) {\n valid = false;\n }\n setIsFormValid(valid);\n }, [pathUrl]);\n\n const inputChange = (e: React.ChangeEvent) => {\n setPathUrl(e.target.value);\n };\n\n const keyPressed = (e: any) => {\n if (e.code === \"Enter\" && pathUrl !== \"\") {\n createProcess();\n }\n };\n\n return (\n \n }\n >\n \n \n Current Path: \n \n {currentPath}\n
\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst mapStateToProps = ({ objectBrowser }: AppState) => ({\n simplePath: objectBrowser.simplePath,\n});\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(CreatePathModal);\n"],"names":["useStyles","makeStyles","theme","createStyles","modalStyleUtils","formFieldStyles","connector","connect","simplePath","objectBrowser","modalOpen","bucketName","folderName","onClose","dispatch","useAppDispatch","navigate","useNavigate","classes","useState","pathUrl","setPathUrl","isFormValid","setIsFormValid","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","cleanPathURL","split","filter","splitItem","trim","join","encodeURLString","setModalErrorSnackMessage","errorMessage","detailedError","valid","length","title","titleIcon","container","item","xs","className","formFieldRow","style","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","modalButtonBar","type","color","variant","onClick","disabled"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2185.b77a9469.chunk.js b/portal-ui/build/static/js/2185.b77a9469.chunk.js
deleted file mode 100644
index 5f21163b1..000000000
--- a/portal-ui/build/static/js/2185.b77a9469.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2185],{62185:function(e,t,n){n.r(t);var r=n(29439),a=n(1413),o=n(72791),i=n(57689),l=n(75952),s=n(56028),c=n(61889),u=n(21435),d=n(11135),f=n(23814),h=n(78687),m=n(45248),x=n(56096),p=n(25469),j=n(87995),v=n(72455),b=n(80184),w=(0,v.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)({},f.ID),f.DF))})),Z=(0,h.$j)((function(e){return{simplePath:e.objectBrowser.simplePath}}));t.default=Z((function(e){var t=e.modalOpen,n=(e.folderName,e.bucketName),a=e.onClose,d=e.simplePath,f=(0,p.TL)(),v=(0,i.s0)(),Z=w(),P=(0,o.useState)(""),C=(0,r.Z)(P,2),g=C[0],k=C[1],F=(0,o.useState)(!1),N=(0,r.Z)(F,2),y=N[0],E=N[1],S=(0,o.useState)(n),z=(0,r.Z)(S,2),B=z[0],I=z[1],L=(0,h.v9)((function(e){return e.objectBrowser.records}));(0,o.useEffect)((function(){if(d){var e="".concat(n).concat(n.endsWith("/")||d.startsWith("/")?"":"/").concat(d);I(e)}}),[d,n]);var O=function(){var e="/";d&&(e=d.endsWith("/")?d:"".concat(d,"/"));if(-1===L.findIndex((function(t){return t.name===e+g}))){var t=g.split("/").filter((function(e){return""!==e.trim()})).join("/"),r="/browser/".concat(n,"/").concat((0,m.LL)("".concat(e).concat(t,"/")));v(r),a()}else f((0,j.zb)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}))};(0,o.useEffect)((function(){var e=!0;0===g.trim().length&&(e=!1),E(e)}),[g]);return(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(s.Z,{modalOpen:t,title:"Choose or create a new path",onClose:a,titleIcon:(0,b.jsx)(x.Z9m,{}),children:(0,b.jsxs)(c.ZP,{container:!0,children:[(0,b.jsxs)(c.ZP,{item:!0,xs:12,className:Z.formFieldRow,children:[(0,b.jsx)("strong",{children:"Current Path:"})," ",(0,b.jsx)("br",{}),(0,b.jsx)("div",{style:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:B})]}),(0,b.jsx)(c.ZP,{item:!0,xs:12,className:Z.formFieldRow,children:(0,b.jsx)(u.Z,{value:g,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:function(e){k(e.target.value)},onKeyPress:function(e){"Enter"===e.code&&""!==g&&O()},required:!0})}),(0,b.jsxs)(c.ZP,{item:!0,xs:12,className:Z.modalButtonBar,children:[(0,b.jsx)(l.zx,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:function(){k("")},label:"Clear"}),(0,b.jsx)(l.zx,{id:"create",type:"submit",variant:"callAction",disabled:!y,onClick:O,label:"Create"})]})]})})})}))}}]);
-//# sourceMappingURL=2185.b77a9469.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2185.b77a9469.chunk.js.map b/portal-ui/build/static/js/2185.b77a9469.chunk.js.map
deleted file mode 100644
index ae64b0d76..000000000
--- a/portal-ui/build/static/js/2185.b77a9469.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2185.b77a9469.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreatePathModal.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 { useNavigate } from \"react-router-dom\";\nimport { Button } from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { Grid } from \"@mui/material\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { connect, useSelector } from \"react-redux\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { BucketObjectItem } from \"./types\";\nimport { CreateNewPathIcon } from \"../../../../../../icons\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface ICreatePath {\n modalOpen: boolean;\n bucketName: string;\n folderName: string;\n onClose: () => any;\n simplePath: string | null;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n })\n);\n\nconst CreatePathModal = ({\n modalOpen,\n folderName,\n bucketName,\n onClose,\n simplePath,\n}: ICreatePath) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const [pathUrl, setPathUrl] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [currentPath, setCurrentPath] = useState(bucketName);\n\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n useEffect(() => {\n if (simplePath) {\n const newPath = `${bucketName}${\n !bucketName.endsWith(\"/\") && !simplePath.startsWith(\"/\") ? \"/\" : \"\"\n }${simplePath}`;\n\n setCurrentPath(newPath);\n }\n }, [simplePath, bucketName]);\n\n const resetForm = () => {\n setPathUrl(\"\");\n };\n\n const createProcess = () => {\n let folderPath = \"/\";\n\n if (simplePath) {\n folderPath = simplePath.endsWith(\"/\") ? simplePath : `${simplePath}/`;\n }\n\n const sharesName = (record: BucketObjectItem) =>\n record.name === folderPath + pathUrl;\n\n if (records.findIndex(sharesName) !== -1) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Folder cannot have the same name as an existing file\",\n detailedError: \"\",\n })\n );\n return;\n }\n\n const cleanPathURL = pathUrl\n .split(\"/\")\n .filter((splitItem) => splitItem.trim() !== \"\")\n .join(\"/\");\n\n const newPath = `/browser/${bucketName}/${encodeURLString(\n `${folderPath}${cleanPathURL}/`\n )}`;\n navigate(newPath);\n onClose();\n };\n\n useEffect(() => {\n let valid = true;\n if (pathUrl.trim().length === 0) {\n valid = false;\n }\n setIsFormValid(valid);\n }, [pathUrl]);\n\n const inputChange = (e: React.ChangeEvent) => {\n setPathUrl(e.target.value);\n };\n\n const keyPressed = (e: any) => {\n if (e.code === \"Enter\" && pathUrl !== \"\") {\n createProcess();\n }\n };\n\n return (\n \n }\n >\n \n \n Current Path: \n \n {currentPath}\n
\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst mapStateToProps = ({ objectBrowser }: AppState) => ({\n simplePath: objectBrowser.simplePath,\n});\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(CreatePathModal);\n"],"names":["useStyles","makeStyles","theme","createStyles","modalStyleUtils","formFieldStyles","connector","connect","simplePath","objectBrowser","modalOpen","bucketName","folderName","onClose","dispatch","useAppDispatch","navigate","useNavigate","classes","useState","pathUrl","setPathUrl","isFormValid","setIsFormValid","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","cleanPathURL","split","filter","splitItem","trim","join","encodeURLString","setModalErrorSnackMessage","errorMessage","detailedError","valid","length","title","titleIcon","container","item","xs","className","formFieldRow","style","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","modalButtonBar","type","color","variant","onClick","disabled"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2338.0f7ba0f5.chunk.js b/portal-ui/build/static/js/2338.0f7ba0f5.chunk.js
deleted file mode 100644
index 143f2f234..000000000
--- a/portal-ui/build/static/js/2338.0f7ba0f5.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2338],{23804:function(e,t,n){n(72791);var i=n(11135),r=n(25787),o=n(61889),s=n(80184);t.Z=(0,r.Z)((function(e){return(0,i.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,i=e.title,r=e.help;return(0,s.jsx)("div",{className:t.root,children:(0,s.jsxs)(o.ZP,{container:!0,children:[(0,s.jsxs)(o.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,i]}),(0,s.jsx)(o.ZP,{item:!0,xs:12,className:t.helpText,children:r})]})})}))},25739:function(e,t,n){n(72791);var i=n(64554),r=n(50896),o=n(80184);t.Z=function(e){var t=e.children,n=e.title,s=e.helpbox,a=e.icon;return(0,o.jsxs)(i.Z,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:{md:"2fr 1.2fr",xs:"1fr"},border:"1px solid #eaeaea"},children:[(0,o.jsxs)(i.Z,{children:[(0,o.jsx)(r.Z,{icon:a,children:n}),(0,o.jsx)(i.Z,{sx:{height:16}}),t]}),s]})}},72338:function(e,t,n){n.r(t),n.d(t,{default:function(){return j}});var i=n(72791),r=n(57689),o=n(64554),s=n(34345),a=n(56087),l=n(32291),c=n(84669),d=n(74794),m=n(61889),g=n(75952),x=n(80184),h=function(e){var t=e.onClick,n=e.icon,i=e.name,r={tierTypeCard:{height:"80px",width:"auto",display:"flex",alignItems:"center",justifyContent:"flex-start",padding:5,border:"1px solid #E5E5E5",borderRadius:2,cursor:"pointer",overflow:"hidden","&:hover":{background:"#ebebeb"}},tierTypeTitle:{fontWeight:600,fontSize:14,justifyContent:"center"}};return(0,x.jsx)(g.zx,{id:i,onClick:function(){t(i)},style:r.tierTypeCard,children:(0,x.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[n?(0,x.jsx)(m.ZP,{item:!0,padding:1,xs:4,children:(0,x.jsx)(o.Z,{sx:{"& .min-icon":{height:"30px",width:"30px"}},children:n})}):null,(0,x.jsx)(m.ZP,{item:!0,xs:8,style:r.tierTypeTitle,paddingLeft:1,children:i})]})})},p=n(23804),u=n(56096),f=n(25739),j=function(){var e=(0,r.s0)();return(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(l.Z,{label:(0,x.jsx)(i.Fragment,{children:(0,x.jsx)(c.Z,{to:a.gA.TIERS,label:"Tier Types"})}),actions:(0,x.jsx)(i.Fragment,{})}),(0,x.jsx)(d.Z,{children:(0,x.jsx)(f.Z,{title:"Select Tier Type",icon:(0,x.jsx)(u.y2Y,{}),helpbox:(0,x.jsx)(p.Z,{iconComponent:(0,x.jsx)(u.y2Y,{}),title:"Tier Types",help:(0,x.jsxs)(i.Fragment,{children:["MinIO supports creating object transition lifecycle management rules, where MinIO can automatically move an object to a remote storage \u201ctier\u201d.",(0,x.jsx)("br",{}),(0,x.jsx)("br",{}),"MinIO supports the following Tier types:",(0,x.jsx)("br",{}),(0,x.jsxs)("ul",{children:[(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-s3.html#minio-lifecycle-management-transition-to-s3?ref=con",target:"_blank",rel:"noreferrer",children:"MinIO or other S3-compatible storage"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-s3.html#minio-lifecycle-management-transition-to-s3?ref=con",target:"_blank",rel:"noreferrer",children:"Amazon S3"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-gcs.html#minio-lifecycle-management-transition-to-gcs?ref=con",target:"_blank",rel:"noreferrer",children:"Google Cloud Storage"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-azure.html#minio-lifecycle-management-transition-to-azure?ref=con",target:"_blank",rel:"noreferrer",children:"Microsoft Azure Blob Storage"})})]})]})}),children:(0,x.jsx)(o.Z,{sx:{margin:"15px",display:"grid",gridGap:"20px",gridTemplateColumns:{xs:"repeat(1, 1fr)",sm:"repeat(1, 1fr)",md:"repeat(2, 1fr)",lg:"repeat(2, 1fr)"}},children:s.Bh.map((function(t,n){return(0,x.jsx)(h,{name:t.targetTitle,onClick:function(){var n;n=t.serviceName,e("".concat(a.gA.TIERS_ADD,"/").concat(n))},icon:t.logo},"tierOpt-".concat(n.toString,"-").concat(t.targetTitle))}))})})})]})}},34345:function(e,t,n){n.d(t,{Bh:function(){return c},Pp:function(){return o},b2:function(){return a},f0:function(){return s},vB:function(){return l}});var i=n(56096),r=n(80184),o="minio",s="gcs",a="s3",l="azure",c=[{serviceName:o,targetTitle:"MinIO",logo:(0,r.jsx)(i.$E9,{}),logoXs:(0,r.jsx)(i.YEz,{})},{serviceName:s,targetTitle:"Google Cloud Storage",logo:(0,r.jsx)(i.UQG,{}),logoXs:(0,r.jsx)(i.Vwu,{})},{serviceName:a,targetTitle:"AWS S3",logo:(0,r.jsx)(i.feu,{}),logoXs:(0,r.jsx)(i.Xj3,{})},{serviceName:l,targetTitle:"Azure",logo:(0,r.jsx)(i.jze,{}),logoXs:(0,r.jsx)(i.nAe,{})}]}}]);
-//# sourceMappingURL=2338.0f7ba0f5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2338.d265a623.chunk.js b/portal-ui/build/static/js/2338.d265a623.chunk.js
new file mode 100644
index 000000000..d65ee4286
--- /dev/null
+++ b/portal-ui/build/static/js/2338.d265a623.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2338],{23804:function(e,t,n){n(72791);var i=n(11135),r=n(25787),o=n(61889),s=n(80184);t.Z=(0,r.Z)((function(e){return(0,i.Z)({root:{border:"1px solid #E2E2E2",borderRadius:2,backgroundColor:"#FBFAFA",paddingLeft:25,paddingTop:31,paddingBottom:21,paddingRight:30},leftItems:{fontSize:16,fontWeight:"bold",marginBottom:15,display:"flex",alignItems:"center","& .min-icon":{marginRight:15,height:28,width:38}},helpText:{fontSize:16,paddingLeft:5}})}))((function(e){var t=e.classes,n=e.iconComponent,i=e.title,r=e.help;return(0,s.jsx)("div",{className:t.root,children:(0,s.jsxs)(o.ZP,{container:!0,children:[(0,s.jsxs)(o.ZP,{item:!0,xs:12,className:t.leftItems,children:[n,i]}),(0,s.jsx)(o.ZP,{item:!0,xs:12,className:t.helpText,children:r})]})})}))},25739:function(e,t,n){n(72791);var i=n(64554),r=n(50896),o=n(80184);t.Z=function(e){var t=e.children,n=e.title,s=e.helpbox,a=e.icon;return(0,o.jsxs)(i.Z,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:{md:"2fr 1.2fr",xs:"1fr"},border:"1px solid #eaeaea"},children:[(0,o.jsxs)(i.Z,{children:[(0,o.jsx)(r.Z,{icon:a,children:n}),(0,o.jsx)(i.Z,{sx:{height:16}}),t]}),s]})}},72338:function(e,t,n){n.r(t),n.d(t,{default:function(){return f}});var i=n(72791),r=n(57689),o=n(64554),s=n(34345),a=n(56087),l=n(32291),c=n(84669),d=n(74794),m=n(61889),g=n(75952),x=n(80184),h=function(e){var t=e.onClick,n=e.icon,i=e.name,r={tierTypeCard:{height:"80px",width:"auto",display:"flex",alignItems:"center",justifyContent:"flex-start",padding:5,border:"1px solid #E5E5E5",borderRadius:2,cursor:"pointer",overflow:"hidden","&:hover":{background:"#ebebeb"}},tierTypeTitle:{fontWeight:600,fontSize:14,justifyContent:"center"}};return(0,x.jsx)(g.zxk,{id:i,onClick:function(){t(i)},style:r.tierTypeCard,children:(0,x.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[n?(0,x.jsx)(m.ZP,{item:!0,padding:1,xs:4,children:(0,x.jsx)(o.Z,{sx:{"& .min-icon":{height:"30px",width:"30px"}},children:n})}):null,(0,x.jsx)(m.ZP,{item:!0,xs:8,style:r.tierTypeTitle,paddingLeft:1,children:i})]})})},p=n(23804),u=n(25739),f=function(){var e=(0,r.s0)();return(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(l.Z,{label:(0,x.jsx)(i.Fragment,{children:(0,x.jsx)(c.Z,{to:a.gA.TIERS,label:"Tier Types"})}),actions:(0,x.jsx)(i.Fragment,{})}),(0,x.jsx)(d.Z,{children:(0,x.jsx)(u.Z,{title:"Select Tier Type",icon:(0,x.jsx)(g.y2Y,{}),helpbox:(0,x.jsx)(p.Z,{iconComponent:(0,x.jsx)(g.y2Y,{}),title:"Tier Types",help:(0,x.jsxs)(i.Fragment,{children:["MinIO supports creating object transition lifecycle management rules, where MinIO can automatically move an object to a remote storage \u201ctier\u201d.",(0,x.jsx)("br",{}),(0,x.jsx)("br",{}),"MinIO supports the following Tier types:",(0,x.jsx)("br",{}),(0,x.jsxs)("ul",{children:[(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-s3.html#minio-lifecycle-management-transition-to-s3?ref=con",target:"_blank",rel:"noreferrer",children:"MinIO or other S3-compatible storage"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-s3.html#minio-lifecycle-management-transition-to-s3?ref=con",target:"_blank",rel:"noreferrer",children:"Amazon S3"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-gcs.html#minio-lifecycle-management-transition-to-gcs?ref=con",target:"_blank",rel:"noreferrer",children:"Google Cloud Storage"})}),(0,x.jsx)("li",{children:(0,x.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-azure.html#minio-lifecycle-management-transition-to-azure?ref=con",target:"_blank",rel:"noreferrer",children:"Microsoft Azure Blob Storage"})})]})]})}),children:(0,x.jsx)(o.Z,{sx:{margin:"15px",display:"grid",gridGap:"20px",gridTemplateColumns:{xs:"repeat(1, 1fr)",sm:"repeat(1, 1fr)",md:"repeat(2, 1fr)",lg:"repeat(2, 1fr)"}},children:s.Bh.map((function(t,n){return(0,x.jsx)(h,{name:t.targetTitle,onClick:function(){var n;n=t.serviceName,e("".concat(a.gA.TIERS_ADD,"/").concat(n))},icon:t.logo},"tierOpt-".concat(n.toString,"-").concat(t.targetTitle))}))})})})]})}},34345:function(e,t,n){n.d(t,{Bh:function(){return c},Pp:function(){return o},b2:function(){return a},f0:function(){return s},vB:function(){return l}});var i=n(75952),r=n(80184),o="minio",s="gcs",a="s3",l="azure",c=[{serviceName:o,targetTitle:"MinIO",logo:(0,r.jsx)(i.$E9,{}),logoXs:(0,r.jsx)(i.YEz,{})},{serviceName:s,targetTitle:"Google Cloud Storage",logo:(0,r.jsx)(i.UQG,{}),logoXs:(0,r.jsx)(i.Vwu,{})},{serviceName:a,targetTitle:"AWS S3",logo:(0,r.jsx)(i.feu,{}),logoXs:(0,r.jsx)(i.Xj3,{})},{serviceName:l,targetTitle:"Azure",logo:(0,r.jsx)(i.jze,{}),logoXs:(0,r.jsx)(i.nAe,{})}]}}]);
+//# sourceMappingURL=2338.d265a623.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2338.0f7ba0f5.chunk.js.map b/portal-ui/build/static/js/2338.d265a623.chunk.js.map
similarity index 61%
rename from portal-ui/build/static/js/2338.0f7ba0f5.chunk.js.map
rename to portal-ui/build/static/js/2338.d265a623.chunk.js.map
index 593bafe3e..0b3047f14 100644
--- a/portal-ui/build/static/js/2338.0f7ba0f5.chunk.js.map
+++ b/portal-ui/build/static/js/2338.d265a623.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/2338.0f7ba0f5.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Common/FormLayout.tsx","screens/Console/Configurations/TiersConfiguration/TierTypeCard.tsx","screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport SectionTitle from \"./SectionTitle\";\n\ntype Props = {\n title: string;\n icon: React.ReactNode;\n helpbox?: React.ReactNode;\n children: React.ReactNode;\n};\n\nconst FormLayout: React.FC = ({ children, title, helpbox, icon }) => {\n return (\n \n \n {title} \n \n {children}\n \n\n {helpbox}\n \n );\n};\n\nexport default FormLayout;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\n\nimport { Button } from \"mds\";\n\ntype TierTypeCardProps = {\n onClick: (name: string) => void;\n icon?: any;\n name: string;\n};\nconst TierTypeCard = ({ onClick, icon, name }: TierTypeCardProps) => {\n const styles = {\n tierTypeCard: {\n height: \"80px\",\n width: \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n padding: 5,\n border: \"1px solid #E5E5E5\",\n borderRadius: 2,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": { background: \"#ebebeb\" },\n },\n tierTypeTitle: {\n fontWeight: 600,\n fontSize: 14,\n justifyContent: \"center\",\n },\n };\n return (\n {\n onClick(name);\n }}\n style={styles.tierTypeCard}\n >\n \n {icon ? (\n \n \n {icon}\n \n \n ) : null}\n \n {name}\n \n \n \n );\n};\n\nexport default TierTypeCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useNavigate } from \"react-router-dom\";\nimport { Box } from \"@mui/material\";\nimport { tierTypes } from \"./utils\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport BackLink from \"../../../../common/BackLink\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport TierTypeCard from \"./TierTypeCard\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { TiersIcon } from \"../../../../icons\";\nimport FormLayout from \"../../Common/FormLayout\";\n\nconst TierTypeSelector = () => {\n const navigate = useNavigate();\n\n const typeSelect = (selectName: string) => {\n navigate(`${IAM_PAGES.TIERS_ADD}/${selectName}`);\n };\n\n return (\n \n \n \n \n }\n actions={ }\n />\n\n \n }\n helpbox={\n }\n title={\"Tier Types\"}\n help={\n \n MinIO supports creating object transition lifecycle management\n rules, where MinIO can automatically move an object to a\n remote storage “tier”.\n \n \n MinIO supports the following Tier types:\n \n \n \n }\n />\n }\n >\n \n {tierTypes.map((tierType, index) => (\n {\n typeSelect(tierType.serviceName);\n }}\n icon={tierType.logo}\n />\n ))}\n \n \n \n \n );\n};\n\nexport default TierTypeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\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 AzureTierIcon,\n AzureTierIconXs,\n GoogleTierIcon,\n GoogleTierIconXs,\n MinIOTierIcon,\n MinIOTierIconXs,\n S3TierIcon,\n S3TierIconXs,\n} from \"../../../../icons\";\n\nexport const minioServiceName = \"minio\";\nexport const gcsServiceName = \"gcs\";\nexport const s3ServiceName = \"s3\";\nexport const azureServiceName = \"azure\";\n\nexport const tierTypes = [\n {\n serviceName: minioServiceName,\n targetTitle: \"MinIO\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: gcsServiceName,\n targetTitle: \"Google Cloud Storage\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: s3ServiceName,\n targetTitle: \"AWS S3\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: azureServiceName,\n targetTitle: \"Azure\",\n logo: ,\n logoXs: ,\n },\n];\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","children","helpbox","icon","sx","padding","gap","gridTemplateColumns","md","onClick","name","styles","tierTypeCard","justifyContent","cursor","overflow","background","tierTypeTitle","id","style","Grid","Box","navigate","useNavigate","Fragment","PageHeader","label","BackLink","to","IAM_PAGES","actions","PageLayout","FormLayout","HelpBox","href","target","rel","margin","gridGap","sm","lg","tierTypes","tierType","index","targetTitle","selectName","serviceName","logo","toString","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","logoXs"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/2338.d265a623.chunk.js","mappings":"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","sources":["common/HelpBox.tsx","screens/Console/Common/FormLayout.tsx","screens/Console/Configurations/TiersConfiguration/TierTypeCard.tsx","screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n border: \"1px solid #E2E2E2\",\n borderRadius: 2,\n backgroundColor: \"#FBFAFA\",\n paddingLeft: 25,\n paddingTop: 31,\n paddingBottom: 21,\n paddingRight: 30,\n },\n leftItems: {\n fontSize: 16,\n fontWeight: \"bold\",\n marginBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: 15,\n height: 28,\n width: 38,\n },\n },\n helpText: {\n fontSize: 16,\n paddingLeft: 5,\n },\n });\n\ninterface IHelpBox {\n classes: any;\n iconComponent: any;\n title: string | React.ReactNode;\n help: any;\n}\n\nconst HelpBox = ({ classes, iconComponent, title, help }: IHelpBox) => {\n return (\n \n \n \n {iconComponent}\n {title}\n \n \n {help}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(HelpBox);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport SectionTitle from \"./SectionTitle\";\n\ntype Props = {\n title: string;\n icon: React.ReactNode;\n helpbox?: React.ReactNode;\n children: React.ReactNode;\n};\n\nconst FormLayout: React.FC = ({ children, title, helpbox, icon }) => {\n return (\n \n \n {title} \n \n {children}\n \n\n {helpbox}\n \n );\n};\n\nexport default FormLayout;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\n\nimport { Button } from \"mds\";\n\ntype TierTypeCardProps = {\n onClick: (name: string) => void;\n icon?: any;\n name: string;\n};\nconst TierTypeCard = ({ onClick, icon, name }: TierTypeCardProps) => {\n const styles = {\n tierTypeCard: {\n height: \"80px\",\n width: \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n padding: 5,\n border: \"1px solid #E5E5E5\",\n borderRadius: 2,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": { background: \"#ebebeb\" },\n },\n tierTypeTitle: {\n fontWeight: 600,\n fontSize: 14,\n justifyContent: \"center\",\n },\n };\n return (\n {\n onClick(name);\n }}\n style={styles.tierTypeCard}\n >\n \n {icon ? (\n \n \n {icon}\n \n \n ) : null}\n \n {name}\n \n \n \n );\n};\n\nexport default TierTypeCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useNavigate } from \"react-router-dom\";\nimport { Box } from \"@mui/material\";\nimport { tierTypes } from \"./utils\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport BackLink from \"../../../../common/BackLink\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport TierTypeCard from \"./TierTypeCard\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { TiersIcon } from \"mds\";\nimport FormLayout from \"../../Common/FormLayout\";\n\nconst TierTypeSelector = () => {\n const navigate = useNavigate();\n\n const typeSelect = (selectName: string) => {\n navigate(`${IAM_PAGES.TIERS_ADD}/${selectName}`);\n };\n\n return (\n \n \n \n \n }\n actions={ }\n />\n\n \n }\n helpbox={\n }\n title={\"Tier Types\"}\n help={\n \n MinIO supports creating object transition lifecycle management\n rules, where MinIO can automatically move an object to a\n remote storage “tier”.\n \n \n MinIO supports the following Tier types:\n \n \n \n }\n />\n }\n >\n \n {tierTypes.map((tierType, index) => (\n {\n typeSelect(tierType.serviceName);\n }}\n icon={tierType.logo}\n />\n ))}\n \n \n \n \n );\n};\n\nexport default TierTypeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\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 AzureTierIcon,\n AzureTierIconXs,\n GoogleTierIcon,\n GoogleTierIconXs,\n MinIOTierIcon,\n MinIOTierIconXs,\n S3TierIcon,\n S3TierIconXs,\n} from \"mds\";\n\nexport const minioServiceName = \"minio\";\nexport const gcsServiceName = \"gcs\";\nexport const s3ServiceName = \"s3\";\nexport const azureServiceName = \"azure\";\n\nexport const tierTypes = [\n {\n serviceName: minioServiceName,\n targetTitle: \"MinIO\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: gcsServiceName,\n targetTitle: \"Google Cloud Storage\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: s3ServiceName,\n targetTitle: \"AWS S3\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: azureServiceName,\n targetTitle: \"Azure\",\n logo: ,\n logoXs: ,\n },\n];\n"],"names":["withStyles","theme","createStyles","root","border","borderRadius","backgroundColor","paddingLeft","paddingTop","paddingBottom","paddingRight","leftItems","fontSize","fontWeight","marginBottom","display","alignItems","marginRight","height","width","helpText","classes","iconComponent","title","help","className","container","item","xs","children","helpbox","icon","sx","padding","gap","gridTemplateColumns","md","onClick","name","styles","tierTypeCard","justifyContent","cursor","overflow","background","tierTypeTitle","id","style","Grid","Box","navigate","useNavigate","Fragment","PageHeader","label","BackLink","to","IAM_PAGES","actions","PageLayout","FormLayout","HelpBox","href","target","rel","margin","gridGap","sm","lg","tierTypes","tierType","index","targetTitle","selectName","serviceName","logo","toString","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","logoXs"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2408.4f7b17cd.chunk.js.map b/portal-ui/build/static/js/2408.4f7b17cd.chunk.js.map
deleted file mode 100644
index 8e83c764a..000000000
--- a/portal-ui/build/static/js/2408.4f7b17cd.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/2408.4f7b17cd.chunk.js","mappings":"qQAiGA,WAAeA,EAAAA,EAAAA,IA1DA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,IACF,GAuDL,EArD6B,SAAH,GAOI,IAN5BC,EAAU,EAAVA,WACAC,EAAW,EAAXA,YACAC,EAAW,EAAXA,YACAC,EAAgB,EAAhBA,iBACAC,EAAU,EAAVA,WACAC,EAAO,EAAPA,QAEMC,GAAWC,EAAAA,EAAAA,MACjB,UAA2BL,EAAW,GAA/BM,EAAM,KAAEC,EAAQ,KAOvB,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASP,GAAiB,EAAM,IAC/B,SAACQ,GAAyB,OAC3CL,GAASM,EAAAA,EAAAA,IAAqBD,GAAM,IAGmC,eAAlEE,EAAa,KAAEC,EAAe,KAErC,IAAKZ,EACH,OAAO,KAYT,OACE,SAAC,IAAa,CACZa,MAAK,aACLC,YAAa,SACbC,OAAQjB,EACRkB,WAAW,SAAC,MAAiB,IAC7BC,UAAWN,EACXO,UAhBoB,WACtB,IAAMC,GAAW,UAAQpB,UAClBoB,EAAYb,GAEnBM,EAAgB,MAAM,mBAAD,OAAqBV,EAAU,SAAS,CAC3DkB,KAAMD,GAEV,EAUIE,QAzBY,WAAH,OAASpB,GAAiB,EAAO,EA0B1CqB,qBACE,UAAC,IAAiB,WAAC,0CACuB,KACxC,eAAGC,UAAWpB,EAAQqB,SAAS,UAC5BlB,EAAO,MAAIC,KACT,IAAI,QAMnB,G","sources":["screens/Console/Buckets/BucketDetails/DeleteBucketTagModal.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\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteBucketTagModal {\n deleteOpen: boolean;\n currentTags: any;\n bucketName: string;\n selectedTag: string[];\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst DeleteBucketTagModal = ({\n deleteOpen,\n currentTags,\n selectedTag,\n onCloseAndUpdate,\n bucketName,\n classes,\n}: IDeleteBucketTagModal) => {\n const dispatch = useAppDispatch();\n const [tagKey, tagLabel] = selectedTag;\n\n const onDelSuccess = () => onCloseAndUpdate(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => onCloseAndUpdate(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedTag) {\n return null;\n }\n\n const onConfirmDelete = () => {\n const cleanObject = { ...currentTags };\n delete cleanObject[tagKey];\n\n invokeDeleteApi(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: cleanObject,\n });\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the tag{\" \"}\n \n {tagKey} : {tagLabel}\n {\" \"}\n ?\n \n }\n />\n );\n};\n\nexport default withStyles(styles)(DeleteBucketTagModal);\n"],"names":["withStyles","theme","createStyles","modalBasic","deleteOpen","currentTags","selectedTag","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","tagKey","tagLabel","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","cleanObject","tags","onClose","confirmationContent","className","wrapText"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2408.4f7b17cd.chunk.js b/portal-ui/build/static/js/2408.b23e320f.chunk.js
similarity index 89%
rename from portal-ui/build/static/js/2408.4f7b17cd.chunk.js
rename to portal-ui/build/static/js/2408.b23e320f.chunk.js
index 100b4fef5..a08a22537 100644
--- a/portal-ui/build/static/js/2408.4f7b17cd.chunk.js
+++ b/portal-ui/build/static/js/2408.b23e320f.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2408],{22763:function(e,t,n){n.r(t);var r=n(29439),u=n(1413),o=(n(72791),n(51691)),s=n(11135),a=n(25787),c=n(23814),i=n(9505),l=n(23508),f=n(56096),d=n(87995),p=n(25469),Z=n(80184);t.default=(0,a.Z)((function(e){return(0,s.Z)((0,u.Z)({},c.oO))}))((function(e){var t=e.deleteOpen,n=e.currentTags,s=e.selectedTag,a=e.onCloseAndUpdate,c=e.bucketName,T=e.classes,g=(0,p.TL)(),h=(0,r.Z)(s,2),k=h[0],x=h[1],C=(0,i.Z)((function(){return a(!0)}),(function(e){return g((0,d.Ih)(e))})),b=(0,r.Z)(C,2),m=b[0],v=b[1];if(!s)return null;return(0,Z.jsx)(l.Z,{title:"Delete Tag",confirmText:"Delete",isOpen:t,titleIcon:(0,Z.jsx)(f.NvT,{}),isLoading:m,onConfirm:function(){var e=(0,u.Z)({},n);delete e[k],v("PUT","/api/v1/buckets/".concat(c,"/tags"),{tags:e})},onClose:function(){return a(!1)},confirmationContent:(0,Z.jsxs)(o.Z,{children:["Are you sure you want to delete the tag"," ",(0,Z.jsxs)("b",{className:T.wrapText,children:[k," : ",x]})," ","?"]})})}))}}]);
-//# sourceMappingURL=2408.4f7b17cd.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2408],{22763:function(e,t,n){n.r(t);var r=n(29439),u=n(1413),o=(n(72791),n(51691)),s=n(11135),a=n(25787),c=n(23814),i=n(9505),l=n(23508),f=n(75952),d=n(87995),p=n(25469),Z=n(80184);t.default=(0,a.Z)((function(e){return(0,s.Z)((0,u.Z)({},c.oO))}))((function(e){var t=e.deleteOpen,n=e.currentTags,s=e.selectedTag,a=e.onCloseAndUpdate,c=e.bucketName,T=e.classes,g=(0,p.TL)(),h=(0,r.Z)(s,2),k=h[0],x=h[1],C=(0,i.Z)((function(){return a(!0)}),(function(e){return g((0,d.Ih)(e))})),b=(0,r.Z)(C,2),m=b[0],v=b[1];if(!s)return null;return(0,Z.jsx)(l.Z,{title:"Delete Tag",confirmText:"Delete",isOpen:t,titleIcon:(0,Z.jsx)(f.NvT,{}),isLoading:m,onConfirm:function(){var e=(0,u.Z)({},n);delete e[k],v("PUT","/api/v1/buckets/".concat(c,"/tags"),{tags:e})},onClose:function(){return a(!1)},confirmationContent:(0,Z.jsxs)(o.Z,{children:["Are you sure you want to delete the tag"," ",(0,Z.jsxs)("b",{className:T.wrapText,children:[k," : ",x]})," ","?"]})})}))}}]);
+//# sourceMappingURL=2408.b23e320f.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2408.b23e320f.chunk.js.map b/portal-ui/build/static/js/2408.b23e320f.chunk.js.map
new file mode 100644
index 000000000..b99b4efde
--- /dev/null
+++ b/portal-ui/build/static/js/2408.b23e320f.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/2408.b23e320f.chunk.js","mappings":"qQAiGA,WAAeA,EAAAA,EAAAA,IA1DA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,IACF,GAuDL,EArD6B,SAAH,GAOI,IAN5BC,EAAU,EAAVA,WACAC,EAAW,EAAXA,YACAC,EAAW,EAAXA,YACAC,EAAgB,EAAhBA,iBACAC,EAAU,EAAVA,WACAC,EAAO,EAAPA,QAEMC,GAAWC,EAAAA,EAAAA,MACjB,UAA2BL,EAAW,GAA/BM,EAAM,KAAEC,EAAQ,KAOvB,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASP,GAAiB,EAAM,IAC/B,SAACQ,GAAyB,OAC3CL,GAASM,EAAAA,EAAAA,IAAqBD,GAAM,IAGmC,eAAlEE,EAAa,KAAEC,EAAe,KAErC,IAAKZ,EACH,OAAO,KAYT,OACE,SAAC,IAAa,CACZa,MAAK,aACLC,YAAa,SACbC,OAAQjB,EACRkB,WAAW,SAAC,MAAiB,IAC7BC,UAAWN,EACXO,UAhBoB,WACtB,IAAMC,GAAW,UAAQpB,UAClBoB,EAAYb,GAEnBM,EAAgB,MAAM,mBAAD,OAAqBV,EAAU,SAAS,CAC3DkB,KAAMD,GAEV,EAUIE,QAzBY,WAAH,OAASpB,GAAiB,EAAO,EA0B1CqB,qBACE,UAAC,IAAiB,WAAC,0CACuB,KACxC,eAAGC,UAAWpB,EAAQqB,SAAS,UAC5BlB,EAAO,MAAIC,KACT,IAAI,QAMnB,G","sources":["screens/Console/Buckets/BucketDetails/DeleteBucketTagModal.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\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteBucketTagModal {\n deleteOpen: boolean;\n currentTags: any;\n bucketName: string;\n selectedTag: string[];\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst DeleteBucketTagModal = ({\n deleteOpen,\n currentTags,\n selectedTag,\n onCloseAndUpdate,\n bucketName,\n classes,\n}: IDeleteBucketTagModal) => {\n const dispatch = useAppDispatch();\n const [tagKey, tagLabel] = selectedTag;\n\n const onDelSuccess = () => onCloseAndUpdate(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => onCloseAndUpdate(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedTag) {\n return null;\n }\n\n const onConfirmDelete = () => {\n const cleanObject = { ...currentTags };\n delete cleanObject[tagKey];\n\n invokeDeleteApi(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: cleanObject,\n });\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the tag{\" \"}\n \n {tagKey} : {tagLabel}\n {\" \"}\n ?\n \n }\n />\n );\n};\n\nexport default withStyles(styles)(DeleteBucketTagModal);\n"],"names":["withStyles","theme","createStyles","modalBasic","deleteOpen","currentTags","selectedTag","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","tagKey","tagLabel","useApi","err","setErrorSnackMessage","deleteLoading","invokeDeleteApi","title","confirmText","isOpen","titleIcon","isLoading","onConfirm","cleanObject","tags","onClose","confirmationContent","className","wrapText"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/247.37adf47a.chunk.js b/portal-ui/build/static/js/247.37adf47a.chunk.js
new file mode 100644
index 000000000..cbfbcf8a9
--- /dev/null
+++ b/portal-ui/build/static/js/247.37adf47a.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[247],{40247:function(e,a,n){n.r(a);var t=n(29439),s=n(1413),l=n(72791),i=n(75952),o=n(61889),r=n(11135),c=n(25787),d=n(23814),u=n(21435),m=n(56028),Z=n(81207),g=n(87995),p=n(25469),f=n(80184);a.default=(0,c.Z)((function(e){return(0,r.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},d.DF),d.ID),d.bK))}))((function(e){var a=e.modalOpen,n=e.currentTags,r=e.onCloseAndUpdate,c=e.bucketName,d=e.classes,x=(0,p.TL)(),h=(0,l.useState)(""),v=(0,t.Z)(h,2),b=v[0],j=v[1],k=(0,l.useState)(""),N=(0,t.Z)(k,2),C=N[0],w=N[1],T=(0,l.useState)(!1),y=(0,t.Z)(T,2),B=y[0],S=y[1];return(0,f.jsx)(m.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){r(!1)},titleIcon:(0,f.jsx)(i.OCT,{}),children:(0,f.jsxs)(o.ZP,{container:!0,children:[(0,f.jsxs)("div",{className:d.spacerBottom,children:[(0,f.jsx)("strong",{children:"Bucket"}),": ",c]}),(0,f.jsx)(o.ZP,{item:!0,xs:12,className:d.formFieldRow,children:(0,f.jsx)(u.Z,{value:b,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){j(e.target.value)}})}),(0,f.jsx)(o.ZP,{item:!0,xs:12,className:d.formFieldRow,children:(0,f.jsx)(u.Z,{value:C,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){w(e.target.value)}})}),(0,f.jsxs)(o.ZP,{item:!0,xs:12,className:d.modalButtonBar,children:[(0,f.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){w(""),j("")},label:"Clear"}),(0,f.jsx)(i.zxk,{id:"save-add-bucket-tag",type:"submit",variant:"callAction",color:"primary",disabled:""===C.trim()||""===b.trim()||B,onClick:function(){S(!0);var e={};e[b]=C;var a=(0,s.Z)((0,s.Z)({},n),e);Z.Z.invoke("PUT","/api/v1/buckets/".concat(c,"/tags"),{tags:a}).then((function(e){S(!1),r(!0)})).catch((function(e){x((0,g.zb)(e)),S(!1)}))},label:"Save"})]})]})})}))},56028:function(e,a,n){var t=n(29439),s=n(1413),l=n(72791),i=n(78687),o=n(13400),r=n(55646),c=n(5574),d=n(65661),u=n(39157),m=n(11135),Z=n(25787),g=n(23814),p=n(25469),f=n(29823),x=n(28057),h=n(87995),v=n(80184);a.Z=(0,Z.Z)((function(e){return(0,m.Z)((0,s.Z)((0,s.Z)({},g.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},g.sN))}))((function(e){var a=e.onClose,n=e.modalOpen,m=e.title,Z=e.children,g=e.classes,b=e.wideLimit,j=void 0===b||b,k=e.noContentPadding,N=e.titleIcon,C=void 0===N?null:N,w=(0,p.TL)(),T=(0,l.useState)(!1),y=(0,t.Z)(T,2),B=y[0],S=y[1],E=(0,i.v9)((function(e){return e.system.modalSnackBar}));(0,l.useEffect)((function(){w((0,h.MK)(""))}),[w]),(0,l.useEffect)((function(){if(E){if(""===E.message)return void S(!1);"error"!==E.type&&S(!0)}}),[E]);var K=j?{classes:{paper:g.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},L="";return E&&(L=E.detailedErrorMsg,(""===E.detailedErrorMsg||E.detailedErrorMsg.length<5)&&(L=E.message)),(0,v.jsxs)(c.Z,(0,s.Z)((0,s.Z)({open:n,classes:g},K),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:g.root,children:[(0,v.jsxs)(d.Z,{className:g.title,children:[(0,v.jsxs)("div",{className:g.titleText,children:[C," ",m]}),(0,v.jsx)("div",{className:g.closeContainer,children:(0,v.jsx)(o.Z,{"aria-label":"close",id:"close",className:g.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,v.jsx)(f.Z,{})})})]}),(0,v.jsx)(x.Z,{isModal:!0}),(0,v.jsx)(r.Z,{open:B,className:g.snackBarModal,onClose:function(){S(!1),w((0,h.MK)(""))},message:L,ContentProps:{className:"".concat(g.snackBar," ").concat(E&&"error"===E.type?g.errorSnackBar:"")},autoHideDuration:E&&"error"===E.type?1e4:5e3}),(0,v.jsx)(u.Z,{className:k?"":g.content,children:Z})]}))}))}}]);
+//# sourceMappingURL=247.37adf47a.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/247.37adf47a.chunk.js.map b/portal-ui/build/static/js/247.37adf47a.chunk.js.map
new file mode 100644
index 000000000..91edf582b
--- /dev/null
+++ b/portal-ui/build/static/js/247.37adf47a.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/247.37adf47a.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"mds\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n\n classes,\n}: IBucketTagModal) => {\n const dispatch = useAppDispatch();\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={ }\n >\n \n \n Bucket : {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AddBucketTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","onClick","color","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","setModalErrorSnackMessage","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","open","scroll","event","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/247.f860e311.chunk.js b/portal-ui/build/static/js/247.f860e311.chunk.js
deleted file mode 100644
index b532314a6..000000000
--- a/portal-ui/build/static/js/247.f860e311.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[247],{40247:function(e,a,n){n.r(a);var t=n(29439),s=n(1413),l=n(72791),i=n(75952),o=n(61889),r=n(11135),c=n(25787),d=n(23814),u=n(21435),m=n(56028),Z=n(81207),g=n(56096),p=n(87995),f=n(25469),x=n(80184);a.default=(0,c.Z)((function(e){return(0,r.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},d.DF),d.ID),d.bK))}))((function(e){var a=e.modalOpen,n=e.currentTags,r=e.onCloseAndUpdate,c=e.bucketName,d=e.classes,h=(0,f.TL)(),v=(0,l.useState)(""),b=(0,t.Z)(v,2),j=b[0],N=b[1],k=(0,l.useState)(""),C=(0,t.Z)(k,2),w=C[0],T=C[1],y=(0,l.useState)(!1),B=(0,t.Z)(y,2),S=B[0],E=B[1];return(0,x.jsx)(m.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){r(!1)},titleIcon:(0,x.jsx)(g.OCT,{}),children:(0,x.jsxs)(o.ZP,{container:!0,children:[(0,x.jsxs)("div",{className:d.spacerBottom,children:[(0,x.jsx)("strong",{children:"Bucket"}),": ",c]}),(0,x.jsx)(o.ZP,{item:!0,xs:12,className:d.formFieldRow,children:(0,x.jsx)(u.Z,{value:j,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){N(e.target.value)}})}),(0,x.jsx)(o.ZP,{item:!0,xs:12,className:d.formFieldRow,children:(0,x.jsx)(u.Z,{value:w,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){T(e.target.value)}})}),(0,x.jsxs)(o.ZP,{item:!0,xs:12,className:d.modalButtonBar,children:[(0,x.jsx)(i.zx,{id:"clear",type:"button",variant:"regular",onClick:function(){T(""),N("")},label:"Clear"}),(0,x.jsx)(i.zx,{id:"save-add-bucket-tag",type:"submit",variant:"callAction",color:"primary",disabled:""===w.trim()||""===j.trim()||S,onClick:function(){E(!0);var e={};e[j]=w;var a=(0,s.Z)((0,s.Z)({},n),e);Z.Z.invoke("PUT","/api/v1/buckets/".concat(c,"/tags"),{tags:a}).then((function(e){E(!1),r(!0)})).catch((function(e){h((0,p.zb)(e)),E(!1)}))},label:"Save"})]})]})})}))},56028:function(e,a,n){var t=n(29439),s=n(1413),l=n(72791),i=n(78687),o=n(13400),r=n(55646),c=n(5574),d=n(65661),u=n(39157),m=n(11135),Z=n(25787),g=n(23814),p=n(25469),f=n(29823),x=n(28057),h=n(87995),v=n(80184);a.Z=(0,Z.Z)((function(e){return(0,m.Z)((0,s.Z)((0,s.Z)({},g.Qw),{},{content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},g.sN))}))((function(e){var a=e.onClose,n=e.modalOpen,m=e.title,Z=e.children,g=e.classes,b=e.wideLimit,j=void 0===b||b,N=e.noContentPadding,k=e.titleIcon,C=void 0===k?null:k,w=(0,p.TL)(),T=(0,l.useState)(!1),y=(0,t.Z)(T,2),B=y[0],S=y[1],E=(0,i.v9)((function(e){return e.system.modalSnackBar}));(0,l.useEffect)((function(){w((0,h.MK)(""))}),[w]),(0,l.useEffect)((function(){if(E){if(""===E.message)return void S(!1);"error"!==E.type&&S(!0)}}),[E]);var K=j?{classes:{paper:g.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},L="";return E&&(L=E.detailedErrorMsg,(""===E.detailedErrorMsg||E.detailedErrorMsg.length<5)&&(L=E.message)),(0,v.jsxs)(c.Z,(0,s.Z)((0,s.Z)({open:n,classes:g},K),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:g.root,children:[(0,v.jsxs)(d.Z,{className:g.title,children:[(0,v.jsxs)("div",{className:g.titleText,children:[C," ",m]}),(0,v.jsx)("div",{className:g.closeContainer,children:(0,v.jsx)(o.Z,{"aria-label":"close",id:"close",className:g.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,v.jsx)(f.Z,{})})})]}),(0,v.jsx)(x.Z,{isModal:!0}),(0,v.jsx)(r.Z,{open:B,className:g.snackBarModal,onClose:function(){S(!1),w((0,h.MK)(""))},message:L,ContentProps:{className:"".concat(g.snackBar," ").concat(E&&"error"===E.type?g.errorSnackBar:"")},autoHideDuration:E&&"error"===E.type?1e4:5e3}),(0,v.jsx)(u.Z,{className:N?"":g.content,children:Z})]}))}))}}]);
-//# sourceMappingURL=247.f860e311.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/247.f860e311.chunk.js.map b/portal-ui/build/static/js/247.f860e311.chunk.js.map
deleted file mode 100644
index 1e8d23c1f..000000000
--- a/portal-ui/build/static/js/247.f860e311.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/247.f860e311.chunk.js","mappings":"2RAwJA,WAAeA,EAAAA,EAAAA,IA5GA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,0BACRC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACF,GAuGL,EArG0B,SAAH,GAOC,IANtBC,EAAS,EAATA,UACAC,EAAW,EAAXA,YACAC,EAAgB,EAAhBA,iBACAC,EAAU,EAAVA,WAEAC,EAAO,EAAPA,QAEMC,GAAWC,EAAAA,EAAAA,MACjB,GAA4BC,EAAAA,EAAAA,UAAiB,IAAG,eAAzCC,EAAM,KAAEC,EAAS,KACxB,GAAgCF,EAAAA,EAAAA,UAAiB,IAAG,eAA7CG,EAAQ,KAAEC,EAAW,KAC5B,GAAkCJ,EAAAA,EAAAA,WAAkB,GAAM,eAAnDK,EAAS,KAAEC,EAAY,KA4B9B,OACE,SAAC,IAAY,CACXb,UAAWA,EACXc,MAAK,eACLC,QAAS,WACPb,GAAiB,EACnB,EACAc,WAAW,SAAC,MAAa,IAAI,UAE7B,UAAC,KAAI,CAACC,WAAS,aACb,iBAAKC,UAAWd,EAAQe,aAAa,WACnC,4BAAQ,WAAe,KAAGhB,MAE5B,SAAC,KAAI,CAACiB,MAAI,EAACC,GAAI,GAAIH,UAAWd,EAAQkB,aAAa,UACjD,SAAC,IAAe,CACdC,MAAOf,EACPgB,MAAO,cACPC,GAAI,YACJC,KAAM,YACNC,YAAa,oBACbC,SAAU,SAACC,GACTpB,EAAUoB,EAAEC,OAAOP,MACrB,OAGJ,SAAC,KAAI,CAACH,MAAI,EAACC,GAAI,GAAIH,UAAWd,EAAQkB,aAAa,UACjD,SAAC,IAAe,CACdC,MAAOb,EACPc,MAAO,gBACPC,GAAI,cACJC,KAAM,cACNC,YAAa,sBACbC,SAAU,SAACC,GACTlB,EAAYkB,EAAEC,OAAOP,MACvB,OAGJ,UAAC,KAAI,CAACH,MAAI,EAACC,GAAI,GAAIH,UAAWd,EAAQ2B,eAAe,WACnD,SAAC,KAAM,CACLN,GAAI,QACJO,KAAK,SACLC,QAAQ,UACRC,QApEQ,WAChBvB,EAAY,IACZF,EAAU,GACZ,EAkEUe,MAAO,WAET,SAAC,KAAM,CACLC,GAAI,sBACJO,KAAK,SACLC,QAAQ,aACRE,MAAM,UACNC,SACsB,KAApB1B,EAAS2B,QAAmC,KAAlB7B,EAAO6B,QAAiBzB,EAEpDsB,QA1EY,WACpBrB,GAAa,GACb,IAAMyB,EAAc,CAAC,EAErBA,EAAO9B,GAAUE,EACjB,IAAM6B,GAAU,kBAAQtC,GAAgBqC,GAExCE,EAAAA,EAAAA,OACU,MAAM,mBAAD,OAAqBrC,EAAU,SAAS,CACnDsC,KAAMF,IAEPG,MAAK,SAACC,GACL9B,GAAa,GACbX,GAAiB,EACnB,IACC0C,OAAM,SAACC,GACNxC,GAASyC,EAAAA,EAAAA,IAA0BD,IACnChC,GAAa,EACf,GACJ,EAwDUW,MAAO,gBAMnB,G,qNCuBA,KAAe9B,EAAAA,EAAAA,IAlIA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAa,kBACRmD,EAAAA,IAAkB,IACrBC,QAAS,CACPC,QAAS,GACTC,cAAe,GAEjBC,iBAAkB,CAChBC,MAAO,OACPC,SAAU,MAETC,EAAAA,IACF,GAsHL,EApHqB,SAAH,GASE,IARlBvC,EAAO,EAAPA,QACAf,EAAS,EAATA,UACAc,EAAK,EAALA,MACAyC,EAAQ,EAARA,SACAnD,EAAO,EAAPA,QAAQ,EAAD,EACPoD,UAAAA,OAAS,OAAO,EAChBC,EAAgB,EAAhBA,iBAAiB,EAAD,EAChBzC,UAAAA,OAAS,MAAG,KAAI,EAEVX,GAAWC,EAAAA,EAAAA,MACjB,GAAwCC,EAAAA,EAAAA,WAAkB,GAAM,eAAzDmD,EAAY,KAAEC,EAAe,KAE9BC,GAAoBC,EAAAA,EAAAA,KACxB,SAACC,GAAe,OAAKA,EAAMC,OAAOC,aAAa,KAGjDC,EAAAA,EAAAA,YAAU,WACR5D,GAAS6D,EAAAA,EAAAA,IAAqB,IAChC,GAAG,CAAC7D,KAEJ4D,EAAAA,EAAAA,YAAU,WACR,GAAIL,EAAmB,CACrB,GAAkC,KAA9BA,EAAkBO,QAEpB,YADAR,GAAgB,GAIa,UAA3BC,EAAkB5B,MACpB2B,GAAgB,EAEpB,CACF,GAAG,CAACC,IAEJ,IAKMQ,EAAaZ,EACf,CACEpD,QAAS,CACPiE,MAAOjE,EAAQ+C,mBAGnB,CAAEE,SAAU,KAAeiB,WAAW,GAEtCH,EAAU,GAYd,OAVIP,IACFO,EAAUP,EAAkBW,kBAEa,KAAvCX,EAAkBW,kBAClBX,EAAkBW,iBAAiBC,OAAS,KAE5CL,EAAUP,EAAkBO,WAK9B,UAAC,KAAM,gBACLM,KAAMzE,EACNI,QAASA,GACLgE,GAAU,IACdM,OAAQ,QACR3D,QAAS,SAAC4D,EAAOC,GACA,kBAAXA,GACF7D,GAEJ,EACAG,UAAWd,EAAQyE,KAAK,WAExB,UAAC,IAAW,CAAC3D,UAAWd,EAAQU,MAAM,WACpC,iBAAKI,UAAWd,EAAQ0E,UAAU,UAC/B9D,EAAU,IAAEF,MAEf,gBAAKI,UAAWd,EAAQ2E,eAAe,UACrC,SAAC,IAAU,CACT,aAAW,QACXtD,GAAI,QACJP,UAAWd,EAAQ4E,YACnB9C,QAASnB,EACTkE,eAAa,EACbC,KAAK,QAAO,UAEZ,SAAC,IAAS,YAKhB,SAAC,IAAS,CAACC,SAAS,KACpB,SAAC,IAAQ,CACPV,KAAMf,EACNxC,UAAWd,EAAQgF,cACnBrE,QAAS,WA3Db4C,GAAgB,GAChBtD,GAAS6D,EAAAA,EAAAA,IAAqB,IA4D1B,EACAC,QAASA,EACTkB,aAAc,CACZnE,UAAU,GAAD,OAAKd,EAAQkF,SAAQ,YAC5B1B,GAAgD,UAA3BA,EAAkB5B,KACnC5B,EAAQmF,cACR,KAGRC,iBACE5B,GAAgD,UAA3BA,EAAkB5B,KAAmB,IAAQ,OAGtE,SAAC,IAAa,CAACd,UAAWuC,EAAmB,GAAKrD,EAAQ4C,QAAQ,SAC/DO,OAIT,G","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button } from \"mds\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n\n classes,\n}: IBucketTagModal) => {\n const dispatch = useAppDispatch();\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={ }\n >\n \n \n Bucket : {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AddBucketTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport MainError from \"../MainError/MainError\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n noContentPadding?: boolean;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n noContentPadding,\n titleIcon = null,\n}: IModalProps) => {\n const dispatch = useAppDispatch();\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n const modalSnackMessage = useSelector(\n (state: AppState) => state.system.modalSnackBar\n );\n\n useEffect(() => {\n dispatch(setModalSnackMessage(\"\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n dispatch(setModalSnackMessage(\"\"));\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n \n {titleIcon} {title}\n
\n \n \n \n \n
\n \n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nexport default withStyles(styles)(ModalWrapper);\n"],"names":["withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","onClick","color","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","setModalErrorSnackMessage","deleteDialogStyles","content","padding","paddingBottom","customDialogSize","width","maxWidth","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","modalSnackMessage","useSelector","state","system","modalSnackBar","useEffect","setModalSnackMessage","message","customSize","paper","fullWidth","detailedErrorMsg","length","open","scroll","event","reason","root","titleText","closeContainer","closeButton","disableRipple","size","isModal","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/2516.6c64276a.chunk.js b/portal-ui/build/static/js/2516.6c64276a.chunk.js
new file mode 100644
index 000000000..66f69e4fc
--- /dev/null
+++ b/portal-ui/build/static/js/2516.6c64276a.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2516],{70827:function(e,r,i){var t=i(4942),n=i(29439),o=i(1413),a=i(72791),l=i(11135),s=i(25787),c=i(61889),d=i(64554),p=i(23814),u=i(21435),f=i(75952),h=i(57689),x=i(25469),m=i(87995),g=i(9505),y=i(32291),b=i(84669),D=i(74794),v=i(50896),C=i(37516),Z=i(80184);r.Z=(0,s.Z)((function(e){return(0,l.Z)((0,o.Z)((0,o.Z)({},p.DF),p.oO))}))((function(e){var r=e.classes,i=e.icon,l=e.helpBox,s=e.header,p=e.backLink,j=e.title,I=e.formFields,k=e.endpoint,_=(0,o.Z)({name:{required:!0,hasError:function(e,r){return!e&&r?"Config Name is required":""},label:"Name",tooltip:"Name for identity provider configuration",placeholder:"Name",type:"text"}},I),q=(0,h.s0)(),E=(0,x.TL)(),S=(0,a.useState)({}),P=(0,n.Z)(S,2),N=P[0],w=P[1],L=(0,g.Z)((function(e){q(p),E((0,m.cN)(!0===e.restart))}),(function(e){return E((0,m.Ih)(e))})),O=(0,n.Z)(L,2),B=O[0],A=O[1],R=function(e,r){return"toggle"===r.type?(0,Z.jsx)(C.Z,{indicatorLabels:["Enabled","Disabled"],checked:"on"===N[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:r.label,tooltip:r.tooltip,onChange:function(r){return w((0,o.Z)((0,o.Z)({},N),{},(0,t.Z)({},e,r.target.checked?"on":"off")))},description:""}):(0,Z.jsx)(u.Z,{id:e,required:r.required,name:e,label:r.label,tooltip:r.tooltip,error:r.hasError(N[e],!0),value:N[e]?N[e]:"",onChange:function(r){return w((0,o.Z)((0,o.Z)({},N),{},(0,t.Z)({},e,r.target.value)))},placeholder:r.placeholder,type:r.type})};return(0,Z.jsxs)(c.ZP,{item:!0,xs:12,children:[(0,Z.jsx)(y.Z,{label:(0,Z.jsx)(b.Z,{to:p,label:s})}),(0,Z.jsx)(D.Z,{children:(0,Z.jsxs)(d.Z,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:{md:"2fr 1.2fr",xs:"1fr"},border:"1px solid #eaeaea"},children:[(0,Z.jsxs)(d.Z,{children:[(0,Z.jsx)(v.Z,{icon:i,children:j}),(0,Z.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();for(var r=N.name,i="",t=0,n=Object.keys(I);t .\n\nimport React, { useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box, Grid } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Button } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport BackLink from \"../../../common/BackLink\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport SectionTitle from \"../Common/SectionTitle\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ntype AddIDPConfigurationProps = {\n classes?: any;\n icon: React.ReactNode;\n helpBox: React.ReactNode;\n header: string;\n title: string;\n backLink: string;\n formFields: object;\n endpoint: string;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalBasic,\n });\n\nconst AddIDPConfiguration = ({\n classes,\n icon,\n helpBox,\n header,\n backLink,\n title,\n formFields,\n endpoint,\n}: AddIDPConfigurationProps) => {\n const extraFormFields = {\n name: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config Name is required\" : \"\";\n },\n label: \"Name\",\n tooltip: \"Name for identity provider configuration\",\n placeholder: \"Name\",\n type: \"text\",\n },\n ...formFields,\n };\n\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n\n const [fields, setFields] = useState({});\n\n const onSuccess = (res: any) => {\n navigate(backLink);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [loading, invokeApi] = useApi(onSuccess, onError);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(extraFormFields)) {\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 resetForm = () => {\n setFields({});\n };\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n const name = fields[\"name\"];\n let input = \"\";\n for (const key of Object.keys(formFields)) {\n if (fields[key]) {\n input += `${key}=${fields[key]} `;\n }\n }\n invokeApi(\"POST\", endpoint, { name, input });\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 />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n type={value.type}\n />\n );\n }\n };\n\n return (\n \n } />\n \n \n \n {title} \n